一、问题描述
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1]
, nums2 = [2,
2]
, return [2]
.
Note:
- Each element in the result must be unique.
- The result can be in any order.
二、思路
方法一超时,方法二通过
三、代码
方法一
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> nums3;
for(int i = 0,j = 0;i < nums1.size() && j< nums2.size();++i,++j){
if(nums1[i] == nums2[j]){
nums3.push_back(nums1[i]);
break;
}
}
for(int k = 0; k < nums3.size();){
if(nums3[k]== nums3[k + 1]){
nums3.erase(nums3.begin() + nums3[k + 1]);
}
}
return nums3;
}
};
方法二:
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
vector<int> nums3;
int i = 0,j = 0;
while(i < nums1.size() && j < nums2.size()){
if(nums1[i] == nums2[j]){
nums3.push_back(nums1[i]);
++i;
++j;
}
else if(nums1[i] > nums2[j])
++j;
else
++i;
while(i > 0 && i < nums1.size() && nums1[i] == nums1[i - 1]) i++;
while(j > 0 && j < nums2.size() && nums2[j] == nums2[j - 1]) j++;
}
return nums3;
}
};