给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2]
示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [4,9]
C++解法:
使用map存nums1,判断nums2的每个值是否在map内,在的话存入新vector内,record[nums2[i]]减一
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
map<int,int> record;
for(int i = 0; i < nums1.size(); i++){
record[nums1[i]]++;
}
vector<int> resultVector;
for(int i = 0; i < nums2.size(); i++){
if(record[nums2[i]] > 0){
resultVector.push_back(nums2[i]);
record[nums2[i]] --;
}
}
return resultVector;
}
};
python解法:
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
d1,d2={},{}
for num in nums1:
d1[num]=d1.setdefault(num,0)+1
for num in nums2:
d2[num]=d2.setdefault(num,0)+1
s=set(d1.keys()).intersection(d2.keys())
for key in s:
d1[key]=min(d1[key],d2[key])
rl=[]
for key in s:
rl.extend([key for i in range(d1[key])])
return rl