zoukankan      html  css  js  c++  java
  • 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 
                    
  • 相关阅读:
    CRM 客户线索 与 销售人员
    CRM X
    MySQL为Null导致的5大坑
    搞懂 macOS 上的主机名/hostname/ComputerName
    Node服务中如何写日志?
    Linux下 iptables 超详细教程和使用示例
    精读《Prisma 的使用》
    Redis夺命20问
    redis HyperLogLog的使用
    聊聊redis分布式锁的8大坑
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/13574754.html
Copyright © 2011-2022 走看看