k 개의 정렬 된 반전리스트를 제공합니다.이 k 개의리스트의 합집합을 얻는 효율적인 알고리즘이 필요합니까? 각 반전 된 목록은 메모리의 읽기 전용 배열이며 각 목록에는 정렬 된 순서로 정수가 포함됩니다. 결과는 충분히 큰 사전 정의 된 배열에 저장됩니다. k-way 병합보다 나은 알고리즘이 있습니까?반전 된리스트의 조합
2
A
답변
2
K-Way 병합이 최적입니다. O(log(k)*n)
ops [모든 목록의 요소 수를 합한 값은 n
입니다.]
그것은 더 나은 할 수없는 경우를 참조하기 쉬운 - 그렇지 않으면 당신은 크기 1.
- 주의 덩어리 [반전 인덱스]로 분할하여
O(nlogn)
다음 어떤 배열이 잘 정렬 할 수 @jpalecek가 언급 한 바와 같이 : 이 대답은 반전 된 인덱스 [결과 배열]이 정렬되는 것이 중요하다고 가정합니다. 이 가정은 반전 된 인덱스를 사용하는 대부분의 응용 프로그램의 경우 특히 정보 검색 영역에서 해당됩니다. 이 [정렬 된 인덱스] 기능을 사용하면 인덱스를 쉽고 빠르게 교차 할 수 있습니다. - 참고 : 표준 k-way 병합을 사용하면 중복이 허용되므로 을 사용해야합니다. 요소가 두 목록에 나타나는 경우 이 한 번만 추가됩니다. [마지막 요소를 확인하기 만하면됩니다. 추가하기 전에 대상 배열].
-1
결과 배열을 정렬 할 필요가없는 경우 가장 좋은 방법은 해시 테이블을 사용하여 본 요소를 표시하는 것입니다. 이렇게하면 O(n)
(전체 요소 수인 n
) 시간 복잡도를 얻을 수 있습니다. (펄)의 라인을 따라
뭔가 :
이 목록에 포함되어 그것이 무엇을 의미 하는가 어떤 값+0
반전 된 인덱스는 기본적으로 정렬됩니다. 결과는 반전 된 인덱스가 아닙니다. – amit
관련 문제
- 1. LISP와 같은 링크 된리스트의 표현
- 2. ASP.net의 이미지 반전 반전
- 3. 반전
- 4. 조합
- 5. 조합
- 6. 조합
- 7. CGContextClipToMask UIImage 마스크 반전 및 반전
- 8. 조합 세로 및 가로 조합
- 9. 반전 인수()
- 10. 행렬 반전
- 11. 반전 순서
- 12. 반전 CRC32
- 13. 이진수의 반전
- 14. 문자열 반전
- 15. LinkedList 반전
- 16. 반전 색상
- 17. 스택 반전
- 18. 반전 조건
- 19. 대기열 반전
- 20. @XmlTransient에서의 반전
- 21. 반전 OpacityMask
- 22. c에서 포인터 : 링크 된리스트의 모든 두 번째 요소를 삭제하는 함수
- 23. Cmd javascript를 사용하여 키 조합 조합 입력
- 24. 단일 집합에서 조합 조합 조합을 나열하는 방법
- 25. 자바 스크립트 키 조합 조합 감지
- 26. 증분 조합?
- 27. 문자열 조합
- 28. 자물쇠 조합
- 29. : 조합 동안의과를
- 30. 정수 조합
이
를 반전 할? – sizzzzlerz(1) k-way 병합은 제거하지 않아도되는 엘리먼트들 사이에 중복 코드가있을 수 있으므로주의하십시오. (2) 역 색인은 어떻게 구현 되었습니까? 배열? B + 나무? – amit
@ 정렬 된 배열을 찾습니다. –