题干解读:要求两个序列的交集,并以从小到大的顺序输出
思路:由于要从小到大输出可以先使用sort函数来排序序列,
由于只要输出交集,所以不需要重复的元素,所以在排序好后需要去重.
最后利用双指针法来找交际,直到有一个指针知道了序列的末尾.
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums1 int整型vector
* @param nums2 int整型vector
* @return int整型vector
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(),nums1.end());
for(int i=0;i<nums1.size();i++){
if(i!=nums1.size()-1 && nums1[i] == nums1[i+1]){
nums1.erase(nums1.begin()+i+1);
i--;
}
}
sort(nums2.begin(),nums2.end());
for(int i=0;i<nums2.size();i++){
if(i!=nums2.size()-1 && nums2[i] == nums2[i+1]){
nums2.erase(nums2.begin()+i+1);
i--;
}
}
vector<int> ans;
int i=0,j=0;
while(i!=nums1.size()&&j!=nums2.size()){
if(nums1[i] == nums2[j]){
ans.push_back(nums1[i]);
i++;
j++;
}else if(nums1[i]>nums2[j]){
j++;
}else if(nums1[i]<nums2[j]){
i++;
}
}
return ans;
}
};

京公网安备 11010502036488号