548.两数组的交II

来源:互联网 发布:帝国时代2兵种数据 编辑:程序博客网 时间:2024/06/05 12:01

题目:

计算两个数组的交


样例:

nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [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        sort(nums1.begin(), nums1.end());          sort(nums2.begin(), nums2.end());          vector<int> result;          auto p1 = nums1.begin();          auto p2 = nums2.begin();          while (p1 != nums1.end() && p2 != nums2.end()) {              if (*p1==*p2)             {                  result.push_back(*p1);                  p1++;                  p2++;              }             else {                  if (*p1 < *p2) {                      p1++; }            else{                      p2++;                  }              }          }          return result;      }};


思想: 先对两数组进行排序,然后建立一个向量result用来存储相同元素,然后两个指针分别从两数组的开始遍历,遇到相同值时保存在result中,若一大一小,小的向后一位,大的不动。