zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):第350题:两个数组的交集 II:给定两个数组,编写一个函数来计算它们的交集。

    题目:

    两个数组的交集 II:给定两个数组,编写一个函数来计算它们的交集。

    示例 1:

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

    输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
    输出: [4,9]
    说明:

    输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
    我们可以不考虑输出结果的顺序。
    进阶:

    如果给定的数组已经排好序呢?你将如何优化你的算法?
    如果 nums1 的大小比 nums2 小很多,哪种方法更优?
    如果 nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?

    思路:

    使用哈希表。

    程序:

    class Solution:
        def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
            if nums1 and not nums2:
                return []
            if not nums1 and nums2:
                return []
            if not nums1 and not nums2:
                return []
            if len(nums1) > len(nums2):
                return self.intersect(nums2, nums1)
            myHashMap = {}
            result = []
            for index1 in nums1:
                if index1 not in myHashMap:
                    myHashMap[index1] = 1
                else:
                    myHashMap[index1] += 1
            for index2 in nums2:
                if index2 in myHashMap and myHashMap[index2] > 0:
                    result.append(index2)
                    myHashMap[index2] -= 1
            return result
    

      

  • 相关阅读:
    ZooKeeper的工作原理
    redis 数据类型详解 以及 redis适用场景场合
    nginx负载均衡原理
    Java中缓存的介绍
    Java中接口的作用
    json与xml的区别
    最经典40个多线程问题总结
    Java线程 : 线程同步与锁
    dbcp与c3p0的区别
    Linux常见命令
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12982835.html
Copyright © 2011-2022 走看看