349 兩個陣列的交集(字典)

2021-10-10 03:35:05 字數 1399 閱讀 9995

1. 問題描述:

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

示例 1:

輸入:nums1 = [1,2,2,1], nums2 = [2,2]

輸出:[2]

示例 2:

輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]

輸出:[9,4]

說明:

2. 思路分析:

① 乙個比較容易想到的是統計出nums1中所有出現的數字,然後遍歷nums2看當前的數字是否也在nums2中,統計出現的數字可以使用字典來進行對映,這樣在遍歷nums2中的數字的時候可以很快地檢查出當前的數字是否在nums1中也出現過

② 除了使用字典進行對映的方法還可以使用python中的&運算子來直接求解兩個集合的交集

3. **如下:

from typing import list

import collections

class solution:

def intersection(self, nums1: list[int], nums2: list[int]) -> list[int]:

dic = collections.defaultdict(int)

res = list()

for x in nums1:

dic[x] += 1

for x in nums2:

if dic[x] > 0 and x not in res:

dic[x] -= 1

return res

from typing import list

class solution:

def intersection(self, nums1: list[int], nums2: list[int]) -> list[int]:

s = set()

res = list()

for x in nums1:

s.add(x)

for x in nums2:

if x in s:

s.remove(x)

return res

&運算:

class solution:

def intersection(self, nums1, nums2):

set1 = set(nums1)

set2 = set(nums2)

return list(set2 & set1)

349 兩個陣列的交集

解題思路 1.分別對兩個數字排序 2.遍歷排序胡的陣列nums1和nums2,索引分別用i,j表示,1 當nums1 i 2 當nums1 i nums j 時,則將j 3 準備乙個list陣列。若兩個數相等,則i j 若當前數nums1 i 在list陣列中未出現,則將當前數存到陣列中,只要有乙個...

349 兩個陣列的交集

給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 輸出結果中的每個元素一定是唯一的。我們可以不考慮輸出結果的順序。注意一 對於交集中的重複的...

349 兩個陣列的交集

給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 輸出結果中的每個元素一定是唯一的。我們可以不考慮輸出結果的順序。我的提交 class so...