题目描述:
返回两个数组的交
注意事项
- Each element in the result must be unique.
- The result can be in any order.
样例:
nums1 = [1,
2, 2, 1], nums2 = [2,
2], 返回 [2].
做题思路:和“两数组的交2”的思想差不多,但是要加上一个判断的语句,为了避免重复把相同的数字放入新的数组中,添加了一个count来进行限制。
关键代码:
class Solution {
public:
/**
* @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// Write your code here
int i=0;
int j=0;
vector<int> v;
int count=0;
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
while(i<nums1.size()&&j<nums2.size())
{ if(nums1[i]>nums2[j])
j++;
else if(nums2[j]>nums1[i])
i++;
else { if(v.size()==0||nums1[i]>count)
{ v.push_back(nums1[i]);
count=nums1[i];
}
i++;
j++;
}
}
return v;
}
};做题感想:我本来先做的这一题,对于不能重复添加一个数字这个要求,想了很多办法,但实现起来总是有漏洞,自己没办法改进,就先做了“两数组的交”那道题,后来想到一个限制语句。
本文介绍了一种求解两个数组交集的算法,并通过C++实现,确保结果中的元素唯一,提供了完整的代码示例及解析。
1318

被折叠的 条评论
为什么被折叠?



