leetcode 2

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
    vector <int> temp;
    sort(nums1.begin(),nums1.end());
    sort(nums2.begin(),nums2.end());
    int i,j;
    i=j=0;
    while(i<nums1.size() && j<nums2.size()){
        if(nums1[i]==nums2[j])
        {
            temp.push_back(nums1[i]);
            i++;
            j++;
        }
        else if(nums1[i]<nums2[j])
        {
            i++;
        }
        else
        j++;
    }
    return temp;
    }
};

注意:采用双指针的方法,先对两个vector排序,然后二者同时移动。双重循环的方法结果不对。

posted @ 2020-08-05 17:40  zmachine  阅读(101)  评论(0编辑  收藏  举报