今天继续刷LeetCode,第349题,找出两个数组中交叉的数,且唯一
分析:
既然不能出现重复的,那么可以利用set的特性,对数组进行去冗余。然后比较两个数组,判断是否存在相同的元素,输出即可。Python中可以直接使用set函数,效率会高很多。
问题:
1、C++中set函数的遍历;
2、Python中set的灵活使用;
附上C++代码:
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> re;
unordered_set<int> s(nums1.begin(),nums1.end());
for(int i=0;i<nums2.size();i++)
{
if(s.erase(nums2[i]))
re.push_back(nums2[i]);
}
return re;
}
};
附上Python代码:
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
a=set(nums1)
li=[]
for i in a:
if i in nums2:
li.append(i)
return li
附上Python代码2:
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
return list(set(nums1)&set(nums2))