У меня есть два списка. Я хочу найти наименьшее общее число в двух. Я думал об использовании HashSet, поскольку он не позволяет дублировать. Я могу узнать общие числа, добавив к ним оба элемента списка. И HashSet принимает только constant time
для вставки. Это может дать мне O(n)
, чтобы найти самый маленький из двух. Но как HashSet может вставить n
элементов в constant time
? В этом случае для добавления последнего элемента требуется O(n)
, потому что для поиска правильного ведра он должен сравнивать хэш-код с n ковшими в худшем случае. Пожалуйста, исправьте это и спасибо заранее ..!Использование HashSet для целых чисел
ответ
алгоритм выглядит довольно просто:
- Построить
HashSet
, содержащий элементы спискаA
. - Инициализировать
min
быть чем-то большим, какInteger.MAX_VALUE
. - Для каждого элемента в
B
, проверьте, находится ли он вHashSet
. Если это так, и оно меньшеmin
, тогда обновитеmin
.
В любом случае алгоритмы хеширования более или менее всегда делают предположение о том, что хэш, по сути, является хорошей хэш-функцией, и вы не беспокоитесь о наихудшем случае O (n).
Спасибо за помощь. Я должен был задать вопрос более востребованным. Я написал алгоритм в самом вопросе. Но я хотел спросить, как HashSet может вставлять элементы в постоянное время. – Panesar
Поиск ведра постоянное - это зависит только от хэш-значения данного объекта, а не от существующих объектов.
Спасибо большое. Я искал в этом направлении. Я предполагаю, что прямой адресный перевод для id ведра (hashcode) является корневым решением для этого. – Panesar
Вы можете найти ответ в любой книге алгоритмов (например, Corman, Knuth). Коротко: bucketIndex = toPositiveInteger (хэш-код())% buckets.length
- 1. HashSet целых чисел
- 2. Использование целых чисел для валюты
- 3. Использование Ceil и целых чисел
- 4. Использование итератора для печати целых чисел
- 5. AS3 - Использование Tween для целых чисел?
- 6. Использование char * для хранения целых чисел
- 7. Использование java для шифрования целых чисел
- 8. Использование NSNumber для сортировки многочисленных целых чисел
- 9. Использование условных выражений для сравнения целых чисел?
- 10. Использование Generics для умножения целых чисел
- 11. Java DecimalFormat - Использование целых чисел
- 12. подсчет целых целых чисел
- 13. C++ Шаблон для целых целых чисел
- 14. Выделение памяти для целых добавочных целых чисел
- 15. Для целых целых чисел и строковых переменных?
- 16. Регулярное выражение для целых чисел и целых чисел?
- 17. Как реализовать массив целых чисел для больших целых чисел?
- 18. Массив целых чисел Сравнение целых чисел VB.NET
- 19. использование двух разных целых чисел на C
- 20. Использование сканера с последовательностью целых чисел
- 21. Использование целых чисел в строке Python
- 22. Лучший генератор случайных чисел для целых чисел
- 23. Использование целых чисел в Objective-C
- 24. Использование целых чисел с ошибкой Win32
- 25. Использование «или» при оценке целых чисел
- 26. Использование целых чисел, произведенных другими классами
- 27. Преобразователь целых чисел для изображения
- 28. Код только для целых чисел
- 29. Настроить хеш для целых чисел?
- 30. Lambda для извлечения целых чисел?
Это домашнее задание? –