lintcode 547两数组的交 lintcode 548两数组的交II

1   问题描述

     547 两数组的交

        返回两数组的交

       样例:

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

  548 两数组的交II

     计算两个数组的交

      样例

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

2 解题思路

 这俩题的解题思路一样,只是一个不可以输出重复元素,另一个能输出重复元素,共同的一步就是先将两个数组排序,然后

在547两数组的交中通过分别移动数组的下标来判断是否有相同的元素,若有则插入到新数组中去,否则不插,最重要的一点就是

新数组的元素不允许有重复,可以通过设置一个记录最新插入的值的标志,每次要插入时判断新数组里面是否已经有相等的元素

若无相等则插入,否则不插入。548两数组的交II新数组中允许有相同的元素。在547的基础上删一些代码就可以实现。

3 解题代码

两数组的交:

      class Solution {
public:
    /**
     * @param nums1 an integer array
     * @param nums2 an integer array
     * @return an integer array
     */
    vector intersection(vector& nums1, vector& nums2) {
        // Write your code here
    vector A;
    sort(nums1.begin(),nums1.end());
    sort(nums2.begin(),nums2.end());
    int t;
    int i=0;
    int j=0;
    int n=nums1.size();
    int m=nums2.size();
    while(i     {
      if(nums1[i]==nums2[j])
      {
      if(t!=nums1[i])
      A.push_back(nums1[i]);
      t=nums1[i];
      i++;j++;
      }
    else if(i     {
        i++;
    }
    else if(inums2[j])
    {
        j++;
    }
    }
     return A;
    }
};

两数组的交II:

   class Solution {
public:
    /**
     * @param nums1 an integer array
     * @param nums2 an integer array
     * @return an integer array
     */
    vector intersection(vector& nums1, vector& nums2) {
        // Write your code here
    vector A;
    sort(nums1.begin(),nums1.end());
    sort(nums2.begin(),nums2.end());
 
    int i=0;
    int j=0;
    int n=nums1.size();
    int m=nums2.size();
    while(i     {
      if(nums1[i]==nums2[j])
      {
   
      A.push_back(nums1[i]);
   
      i++;j++;
      }
    else if(i     {
        i++;
    }
    else if(inums2[j])
    {
        j++;
    }
    }
     return A;
    }
};

4 解题思路

  这个题需要在自己静下来慢慢想,只要先将两数组的交写出来,两数组的交II只是在前面的基础上删掉几行代码就行,

自己刚开始写两个数组的交的时候用了两个for循环,但是一直出的是空结果,这个其实和链表里面合并两个排序链表有相似之处,

链表里面是将指针指向后移,在数组里面将数组元素的下表后移,改完了之后出的就是重复的元素,问了问同学,设置了一个

标志,就解决了问题,II就是在一的基础上允许可以重复元素。


你可能感兴趣的:(排序)