首页 > 编程语言 > 详细

548. 两数组的交集 II

时间:2020-08-27 23:49:08      阅读:91      评论:0      收藏:0      [点我收藏+]

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 
                

 

548. 两数组的交集 II

原文:https://www.cnblogs.com/yunxintryyoubest/p/13574754.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!