两数组的交ll

来源:互联网 发布:centos与linux区别 编辑:程序博客网 时间:2024/06/05 12:24

1.问题描述

计算两个数组的交

 注意事项

每个元素出现次数得和在数组里一样
答案可以以任意顺序给出

样例

nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].


2.解题思路

先对两组数组进行排序,然后依次判断,找出相同的元素,放在一个新的向量里。

3.代码实现

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>m;
        if(nums1.size()!=0)
        
            sort(nums1.begin(),nums1.end());
        }
        if(nums2.size()!=0)
        {
            sort(nums2.begin(),nums2.end());}
        int i=nums1.size(),j=nums2.size();
        if(i==0||j==0)
        return m;
        int k=0,l=0;
        while(k<i&&l<j)
        {
            if(nums1[k]==nums2[l]){
              
            m.push_back(nums1[k]);
                  k++;l++;
            }
            else{
                if(nums1[k]<nums2[l]) k++;
                if(nums1[k]>nums2[l]) l++;
            }
        }
        return m;
    }
};

4.感想

此题的关键在于先进行排序,然后找出相同元素。

原创粉丝点击