이것은 웹에서 찾은 흥미로운 질문입니다. n 개의 숫자를 포함하는 배열이 주어지면 (그들에 대한 정보가 없음), 우리는 숫자 1 <= k가 주어지면 O (k) 시간에 가장 작은 k 개의 요소를 반환 할 수 있도록 선형 시간으로 배열을 사전 처리해야합니다 <= n
나는이 문제를 몇몇 친구들과 논의했지만 아무도 해결책을 찾지 못했다. 도움을 주시면 감사하겠습니다!
빠른 참고 사항 :-k 가장 작은 요소의 순서는 중요하지 않습니다-배열의 요소는 숫자, 정수 일 수 있으며 기수 정렬이 아닐 수 있습니다-숫자 k는 전처리 단계에서 알 수 없습니다. 전처리는 O (n) 시간이다. O (k) 시간에 함수 (k 가장 작은 요소를 찾습니다).
4
최소 힙을 사용하는 것은 어떻습니까?
—
Shir
k- 스카이 밴드와 top-k 계산을보십시오. cs.sfu.ca/~jpei/publications/subsky_tkde07.pdf 문서 는 관련 문헌에 대한 좋은 리뷰를 가지고 있습니다.
—
András Salamon
Shir-I는 min-heap 아이디어를 조사했습니다. 그러나, 최소 힙에서 K 작은 번호를 인쇄하기 위해 필요로 O (klogn) 시간이 아닌 O (K)이다
—
Idan
@ idannik : 왜 최소 힙에서 k 개의 가장 작은 요소 를 찾는 데 시간 이 걸린다고 생각 합니까?
—
Kristoffer Arnsfelt Hansen 2016
나는 이것이 연구 수준이라고 생각하지 않습니다. 과제처럼 보입니다. 어디서 찾았습니까?
—
Kaveh