亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對這個 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 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號