为了账号安全,请及时绑定邮箱和手机立即绑定

对这个 HashMap 算法面试题感到困惑

对这个 HashMap 算法面试题感到困惑

幕布斯6054654 2022-05-12 17:14:19
我正在研究面试问题,遇到了这个问题,这真的让我很困惑。我知道如何做基本的 O(n^2) 解决方案,但 HashTable O(n) 没有任何意义。static void printpairs(int arr[],int sum) {            HashSet<Integer> s = new HashSet<Integer>();     for (int i=0; i<arr.length; ++i)     {         int temp = sum-arr[i];         // checking for condition         if (temp>=0 && s.contains(temp))         {             System.out.println("Pair with given sum " +                                 sum + " is (" + arr[i] +                                 ", "+temp+")");         }         s.add(arr[i]);     } } 令我困惑的部分是其检查条件的部分。当哈希表中没有任何内容时,它会执行 s.contains(temp) 。那么它怎么能包含 sum - i 呢?https://www.geeksforgeeks.org/given-an-array-a-and-a-number-x-check-for-pair-in-a-with-sum-as-x/
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

首先,它是一个HashSet,而不是一个哈希表。

其次,s.add(arr[i])向 中添加元素HashSet,因此s.contains(temp)可能返回true

例如,假设您正在寻找总和为 8 的一对。

  • 如果数组的第一个元素是,则在 中1找不到,而是添加到.8-1Set1Set

  • 然后,如果数组的第二个元素是7,您会8-7在 中找到Set(因为您在上一次迭代中添加1了)。Set


查看完整回答
反对 回复 2022-05-12
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信