class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> ans;
if (nums1.empty() || nums2.empty())
return ans;
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
// 核心思想就是同时对两个数组进行遍历,前提是排好序了
int l = 0;
int r = nums1.size();
int index = 0;
while (l < r && index < nums2.size()) {
// 考虑nums1去除重复
while (l+1 < nums1.size() && nums1[l] == nums1[l+1]) {
l++;
}
// 考虑nums2去除重复
while (index+1 < nums2.size() && nums2[index] == nums2[index+1]) {
index++;
}
// 剩下的就是比较, 然后进行指针的移动
if (nums1[l] < nums2[index]) {
l++;
}
else if (nums1[l] > nums2[index]) {
index++;
}
else {
ans.push_back(nums1[l]);
l++;
index++;
}
}
return ans;
}
};
leetcode349两个数组的交集
最新推荐文章于 2022-01-28 18:54:16 发布