548.两数组的交II

题目:

计算两个数组的交


样例:

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 intersection(vector& nums1, vector& nums2) {
        // Write your code here
        sort(nums1.begin(), nums1.end());  
        sort(nums2.begin(), nums2.end());  
        vector 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中,若一大一小,小的向后一位,大的不动。


你可能感兴趣的:(548.两数组的交II)