问题描述:
计算两个数组的交
样例:
nums1 =
解题思路:
先排序 但是这个是有几个相同的就存几个 ,第二个循环的第一个数只要比要判断的数大就跳出循环。
代码:
计算两个数组的交
样例:
nums1 =
[1, 2, 2, 1]
, nums2 =
[2, 2]
, 返回
[2, 2]
.
解题思路:
先排序 但是这个是有几个相同的就存几个 ,第二个循环的第一个数只要比要判断的数大就跳出循环。
代码:
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
vector<int> a;
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
int k=0;
for (int i=0;i<nums1.size();i++) {
for(int j=k;j<nums2.size();j++){
if(nums2[j]>nums1[i])break;
if(nums1[i]==nums2[j]){a.push_back(nums1[i]);k=j+1;break;}
}
}
return a;
}
};
感想:
有几个相同的就存几个,省去了一些判断。