力扣之求兩個陣列的交集

2021-10-06 08:00:38 字數 765 閱讀 9519

給定兩個陣列,編寫乙個函式來計算它們的交集。

示例 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 說明 輸出結果中每個元素出現的次數,應與元素在兩個陣列 現的次數一致。我們可以不考慮輸...