Прежде всего, это HashSet
, а не хеш-таблица.
Во-вторых, s.add(arr[i])
добавляет элементы в HashSet
, поэтому s.contains(temp)
может вернуть true
.
Например, предположим, что вы ищете пару с суммой 8.
- Если первый элемент массива равен
1
, вы не найдете 8-1
в Set
, но вы добавляете 1
к Set
. - Затем, если второй элемент массива равен
7
, вы найдете 8-7
в Set
(так каквы добавили 1
к Set
в предыдущей итерации).