두 개의 목록이 있습니다. 나는이 둘에서 가장 작은 공통 번호를 찾고 싶다. 중복을 허용하지 않기 때문에 HashSet 사용을 고려했습니다. 두 목록 요소를 모두 추가하는 동안 공통 번호를 찾을 수 있습니다. 그리고 HashSet은 단지 constant time
을 삽입에 사용합니다. 이렇게하면 O(n)
에서 2 개의 가장 작은 공통점을 찾을 수 있습니다. 하지만 constant time
에 HashSet을 삽입하면 n
요소가 어떻게 삽입 될 수 있습니까? 이 경우 최후의 요소를 추가하려면, 최악의 경우는 버킷과 n 버킷을 비교할 필요가있는 올바른 버킷을 찾기 위해서 (때문에), O(n)
시간이 걸린다. 이 문제를 해결하고 미리 감사드립니다 ..!정수에 HashSet 사용
답변
알고리즘은 매우 간단 보인다
- 가
HashSet
목록A
의 요소를 포함 구축합니다. min
을Integer.MAX_VALUE
과 같이 큰 것으로 초기화하십시오.B
의 각 요소에 대해HashSet
에 있는지 테스트합니다. 그럴 경우min
보다 작 으면min
을 업데이트하십시오.
해싱 알고리즘은 해시 함수가 실제로 좋은 해시 함수라는 가정을 항상 유지하며 O (n) 최악의 경우에 대해 걱정하지 않아도됩니다.
도움 주셔서 감사합니다. 나는 더 이상 질문을해야만했다. 내 질문에 알고리즘을 작성했습니다. 하지만 내가 물어보고 싶은 것은 HashSet이 요소를 일정 시간에 삽입 할 수있는 방법이었습니다. – Panesar
버킷을 찾는 것은 일정 시간입니다. 이는 지정된 개체의 해시 값에만 의존하며 기존 개체에는 의존하지 않습니다.
고마워요. 나는이 방향으로 수색했다. 나는 버킷 아이디 (hashcode)에 대한 직접 주소 변환이이를위한 루트 솔루션이라고 가정한다. – Panesar
모든 알고리즘 책 (예 : Corman, Knuth)에서 답을 찾을 수 있습니다. 곧 : bucketIndex = toPositiveInteger (해시()) %의 buckets.length
- 1. WPF에서 ObservableCollection과 함께 HashSet 사용
- 2. 3.5와 호환되는 C# 2.0에서 HashSet 사용
- 3. HashSet 조회 복잡성?
- 4. SQL Server의 Hashset equivalent
- 5. HashSet 이클립스 디버거 변수
- 6. C# 목록으로의 변환 Hashset
- 7. 순서를 유지하는 HashSet
- 8. C# 2.0의 HashSet 대체
- 9. DataTable의 열에서 HashSet 만들기
- 10. Java의 HashSet 충돌
- 11. HashSet 값이 잘못 계산되었습니다.
- 12. 정수에 % f를 사용하는 scanf
- 13. 매크로는 정수에 따라 사용합니다.
- 14. 거의 정수에 관한 질문
- 15. vim : 정수에 대해 str2float
- 16. 정수에 대한 포인터
- 17. 관련 레코드가 HashSet 또는 SortedSet에로드됩니까?
- 18. HashSet <String> .contains()
- 19. HashSet, Vector, LinkedList의 최대 크기
- 20. F #을 사용하는 HashSet`.ToArray()`#
- 21. Java에서 특정 정수에 정수를 반올림하십시오.
- 22. 짧은 정수에 비트를 추가하는 방법
- 23. jaxb를 사용하는 정수에 대한 정수
- 24. 는 바이트 정수에 저장되는 방법
- 25. UILabel에 표시된 정수에 1을 더합니다.
- 26. 정수에 숫자가 나타나는 횟수를 계산하십시오.
- 27. 270 자릿수의 정수에 대한 C++ 정수 라이브러리?
- 28. 정수에 대한 문자열 서식 지정 C#
- 29. Java Collections API HashSet 제거 방법
- 30. HashSet() 함수 데이터를 순차적으로 정렬하는 방법은 무엇입니까?
이 숙제가 있습니까? –