548. 两数组的交集 II

548. 两数组的交集 II

中文English

给定两个数组,计算两个数组的交集

样例

样例1

输入: 
nums1 = [1, 2, 2, 1], nums2 = [2, 2]
输出: 
[2, 2]

样例2

输入: 
nums1 = [1, 1, 2], nums2 = [1]
输出: 
[1]

挑战

-如果给定的数组已经排序了怎么办?如何优化算法?
-如果nums1的大小比num2的小怎么办?哪种算法更好?
-如果nums2的元素存储在磁盘上,并且内存受到限制,以至于不能一次将所有元素加载到内存中,该怎么办?

注意事项

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

 
 
输入测试数据 (每行一个参数)如何理解测试数据?

 排序 + 双指针 

class Solution:
    """
    @param nums1: an integer array
    @param nums2: an integer array
    @return: an integer array
    """
    def intersection(self, nums1, nums2):
        # write your code here
        #排序 + 双指针
        nums1.sort()
        nums2.sort()
        
        results = []
        p1, p2 = 0, 0
        len1, len2 = len(nums1), len(nums2)
        
        while p1 < len1 and p2 < len2:
            if (nums1[p1] == nums2[p2]):
                results.append(nums1[p1])
                p1 += 1 
                p2 += 1 
            elif (nums1[p1] < nums2[p2]):
                p1 += 1 
            elif (nums1[p1] > nums2[p2]):
                p2 += 1 
            
        return results 
                

 

posted @ 2020-08-27 23:07  风不再来  阅读(133)  评论(0编辑  收藏  举报