1.描述:
返回两个数组的交
注意事项
- 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.思路:
先把两数组排序,然后从头开始比较元素大小,把小的一方向后推进一位再做比较,若相等且储存元素的vector中最后一个元素与要加入的元素不想等或者vector为空,则将元素放入。
3.代码:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> res;
int i = 0, j = 0;
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
while (i < nums1.size() && j < nums2.size()) {
if (nums1[i] < nums2[j]) ++i;
else if (nums1[i] > nums2[j]) ++j;
else {
if ( res.empty() ||res.back() != nums1[i]) {
res.push_back(nums1[i]);
}
++i; ++j;
}
}
return res;
}
4.感想:
刚开始没有考虑当vector为空时的情况,导致访问空vector的back时会出现错误,导致一直runtime error