Lintcode——两数组的交

来源:互联网 发布:日本娱乐圈的黑暗知乎 编辑:程序博客网 时间:2024/05/22 02:02


1.题目

返回两个数组的交

注意事项

  • Each element in the result must be unique.
  • The result can be in any order.
样例

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

2.思路

      先对两个数组进行排序,然后从两个数组的头开始遍历并比对,当比对到相同元素时加入到交数组中。

      因为是已经排过序的数组,所以当1数组的i位小于2数组的j位时,可以直接下移比对1数组的i+1位和2数组的j位;2数组j位小于1数组的i位时则2数组下移,比对2数组j+1位和1数组的i位。

     这个问题的难点在于如果相同的数字出现两边则只保存一遍的。所以在把相同元素加入到交数组时,要进行判断是否已加入过该元素,若已经加入过,则不再加入第二遍。

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

4.感想

      这个问题的判断是否已经加入过该元素很有意思。一开始的想法是不管三七二十一先将相同元素加入到交数组中,再遍历交数组删除重复元素,但是觉得那样好像复杂了。。不如直接在加入元素时进行判断:在每次加入时用临时变量保存其值,下次加入时与临时变量进行比较,如果相同则不再重复加入,这样就简单多了,省的再费第二遍事。。。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小学生阅读理解能力差怎么办 小学一年级数学差怎么办 小学一年级数学很差怎么办 初中生脸上长斑怎么办 初中生脸上长痘怎么办 初中成绩不好高中怎么办 农村老人去城里怎么办 留守儿童想妈妈怎么办 教师档案丢失了怎么办 转正定级表丢失怎么办 娃娃写作业慢怎么办 写作业眼睛疼怎么办 发生火灾怎么办大班教案 大班健康发生火灾怎么办 学生上课不提问怎么办 入户通知单丢了怎么办 打架后还来找事该怎么办 着火了怎么办教案视频 电脑一小半黑屏怎么办 绝地求生闪退怎么办 win7没浏览器了怎么办 浏览器被删除了怎么办 把快捷方式删了怎么办 ie文件找不到了怎么办 ie文件不存在了怎么办 大学素质分不够怎么办 素拓学分不够怎么办 大学毕业之前素拓分拿不满怎么办 武汉幼儿医保卡怎么办 养老院护工欺老人怎么办 皮肤毛孔粗大有痘印痘坑怎么办 额头上毛孔大怎么办 额头皮肤毛孔大怎么办 脸部粗糙毛孔大怎么办 脸上有痘印毛孔粗大怎么办 毛孔粗大痘印怎么办 教官12123一直加载怎么办 教官嗓子哑了怎么办 喜欢上考场教官怎么办 跟教官打起来怎么办 车险贴丢了怎么办