LeetCode 349,350:两个数组的交集

题目

LeetCode 349:两个数组的交集
这里写图片描述

LeetCode 350:两个数组的交集II

这里写图片描述
思路

两题都是找交集,349要比350难一些,需要考虑去重问题。

349:
leetcode把该题放在了二分查找类别底下,被误导了,一开始思路是从nums1中找nums2的值,由于两个数组存在重复数,实际使用直接遍历查找十分简单。

首先将两个数组排序,各自从nums1和nums2的第一个元素开始,如果相同,将该元素放入输出数组;如果nums1元素大,nums2向后找;如果nums2元素大,nums1向后找,直到有一个数组被遍历。其中将相同元素数组时需要去重。

350:
和349方法相同,删除去重即可。
代码

349:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        sort(nums1.begin(),nums1.end());
        sort(nums2.begin(),nums2.end());
        int n1 = nums1.size();
        int n2 = nums2.size();
        if(!n1)
            return nums1;
        if(!n2)
            return nums2;
        vector<int> ret;
        for(int i=0,j=0;i<n1&&j<n2;)
        {
            if(nums1[i]==nums2[j])
            {
                if(!ret.size())
                    ret.push_back(nums1[i]);
                else if(nums1[i]!=ret[ret.size()-1])    //去重
                    ret.push_back(nums1[i]);
                i++,j++;
            }
            else if(nums1[i]<nums2[j])
            {
                i++;
            }
            else //nums1[i]>nums2[j]
            {
                j++;
            }
        }
        return ret;
    }
};

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34

350:

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        sort(nums1.begin(),nums1.end());
        sort(nums2.begin(),nums2.end());
        int n=nums1.size();
        int m=nums2.size();
        vector<int> res;
        if(!(n&&m))
            return res;
        int idx=0;
        for(int i=0;i<n;i++)
        {
            for(int j=idx;j<m;j++)
            {
                if(nums1[i]==nums2[j])
                {
                    res.insert(res.end(),nums1[i]);
                    idx=j+1;
                    break;
                }
            }
        }
        return res;
    }
};
---------------------
作者:岳麓吹雪
来源:CSDN
原文:https://blog.csdn.net/lin453701006/article/details/81941358
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-07-30 13:24  天涯海角路  阅读(112)  评论(0)    收藏  举报