LintCode-两数组的交 II

来源:互联网 发布:网络空间用什么来描绘 编辑:程序博客网 时间:2024/05/16 04:38

题目描述:

计算两个数组的交

 注意事项

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

样例:

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

做题思路:先给两个数组进行排序,方便比较,在两个数组长度之内进行比较,如果数值相等,放进新数组中,然后两个数组的下标同时移动,如果不相等,还需要分成两种情况,由于数组是已经排序好的,所以,如果1数组当前的数值大于2数组当前数值,则2数组下标向下挪,反之也是如此。

关键代码:

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

做题思路:这一题做了很长时间,问题在于我是做完了两数之和那道题之后,再做的这道题,用的思路和两数之和一样,所以出现了很多问题,因为刚开始用了两个for循环,所以比较过程中,会出现重复的情况,改了循环范围之后,出现了数组越界情况,所以改变了思路,觉得不能不排序直接进行比较。

原创粉丝点击