问题描述:
返回两个数组的交
样例:
nums1 =
解题思路:
将两个从小到大数组排序,用双循环控制,并且细节处理用if判断舍去不必要的循环。
代码:
返回两个数组的交
样例:
nums1 =
[1, 2, 2, 1]
, nums2 =
[2, 2]
, 返回
[2]
.
解题思路:
将两个从小到大数组排序,用双循环控制,并且细节处理用if判断舍去不必要的循环。
代码:
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++) {
if(i>0&&(nums1[i]==nums1[i-1]))continue;
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;
}
};
感想:
如果数据量大的话,时间会太长,所以要舍去不必要的计算