給定兩個陣列,編寫乙個函式來計算它們的交集。
示例 1:
輸入: nums1 = [1,2,2,1], nums2 = [2,2]
輸出: [2]
示例 2:
輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出: [9,4]
說明:輸出結果中的每個元素一定是唯一的。
我們可以不考慮輸出結果的順序。
我這裡使用的是雙指標的解法
先給兩個陣列排序
新建乙個hashset
然後定義兩個指標
當兩者都小於陣列的長度時,就進入迴圈
當兩個數字相同的時候,這很好,就把這個值放入set中,然後兩個指標都右移
但是理想是美好的,現實是很殘酷的,我們的運氣沒有這麼好,能遇到剛剛好兩個值相等
這時候我們要看哪個值比較大(因為是排好序的)
如果上面的陣列比下面的陣列值要大(我們假設上面的是nums1,下面的是nums2)
那麼讓下面的指標右移一位,再次強調,因為是排好序的,如下面的指標移到底了都找不到相同的,那麼意味著上面最小的比下面最大的還好大,剩下的就不用比了,這兩個陣列肯定沒有交集
但是事實不會這麼殘酷
移啊移,移啊移,兩者相同的時候,加入set,然後兩個指標都右移一位,重複著以上的過程,
當然,如果下面的比上面的大,情況反過來
結束以後,set中的值就是我們需要的了,不比擔心重複的問題,set本身會處理
這時候只需要把set中的值移到陣列中,就完成了。。
力扣 兩個陣列的交集
給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 輸出結果中的每個元素一定是唯一的。我們可以不考慮輸出結果的順序。將陣列排序後去重,然後遍歷...
力扣 兩個陣列的交集 c
class solution while cin a sort nums1.begin nums1.end sort nums2.begin nums2.end nums1.erase unique nums1.begin nums1.end nums1.end nums2.erase unique...
力扣 350 兩個陣列的交集 II
題目 給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2,2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 4,9 說明 輸出結果中每個元素出現的次數,應與元素在兩個陣列 現的次數一致。我們可以不考慮輸...