Title

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

示例 1:

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

示例 2:

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

说明:

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

排序

Solve

如果两个数组是有序的,则可以便捷地计算两个数组的交集。

首先对两个数组进行排序,然后使用两个指针遍历两个数组。

初始时,两个指针分别指向两个数组的头部。每次比较两个指针指向的两个数组中的数字,如果两个数字不相等,则将指向较小数字的指针右移一位,如果两个数字相等,将该数字添加到答案,并将两个指针都右移一位。当至少有一个指针超出数组范围时,遍历结束。

Code

 def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:nums1.sort()nums2.sort()i, j, length1, length2, ans = 0, 0, len(nums1), len(nums2), []while i < length1 and j < length2:if nums1[i] == nums2[j]:ans.append(nums1[i])i += 1j += 1elif nums1[i] < nums2[j]:i += 1else:j += 1return ans

复杂度分析

时间复杂度:O(mlogm+nlogn),其中 m 和 n 分别是两个数组的长度。对两个数组进行排序的时间复杂度是 O(mlogm+nlogn),遍历两个数组的时间复杂度是 O(m+n),因此总时间复杂度是 O(mlogm+nlogn)。

空间复杂度:O(min(m,n)),其中 m 和 n 分别是两个数组的长度。

350. Intersection of Two Arrays II 两个数组的交集 II相关推荐

  1. LeetCode算法题350:两个数组的交集II(Intersection of Two Arrays II)

    技术交流可以加: 本人微信:xcg852390212 本人qq:852390212 学习交流qq群1(已满): 962535112 学习交流qq群2: 780902027 两个数组的交集II Leet ...

  2. 两个对象数组交集_yiduobo的每日leetcode 349.两个数组的交集 amp;amp; 350.两个数组的交集II...

    祖传的手艺不想丢了,所以按顺序写一个leetcode的题解.计划每日两题,争取不卡题吧 349.两个数组的交集https://leetcode-cn.com/problems/intersection ...

  3. LeetCode 350. 两个数组的交集 II

    350. 两个数组的交集 II 难度简单640收藏分享切换为英文接收动态反馈 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集.返回结果中每个元素出现的次数,应与元素在两 ...

  4. leetcode系列-350.两个数组的交集II

    leetcode系列–第350题.两个数组的交集II 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集. 返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一 ...

  5. leetcode初级算法4.两个数组的交集 II

    leetcode初级算法4.两个数组的交集 II 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法:(总结在代码中) public int[] intersect(int[] nums1, in ...

  6. 两个数组的交集 II

    两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 ...

  7. LeetCode 350. 两个数组的交集 II ntersection of Two Arrays II

    Table of Contents 一.中文版 二.英文版 三.My answer 四.解题报告 一.中文版 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2 ...

  8. Leetcode-数据结构-350. 两个数组的交集 II

    问题 给两个整数数组 nums1 和 nums2 ,请以 数组形式 返回两数组的 交集 (其在交集中出现的次数:等于该数字在两个数组中出现次数的最小值). 返回结果中 每个元素出现的次数(for遍历) ...

  9. Leetcode 350. 两个数组的交集 II 解题思路及C++实现

    解题思路: 和349. 两个数组的交集 这道题目很相似,这道题只是在返回的数组中,多了重复的数字,其实相较于349题,350题更简单. 先对两个数组进行排序,然后遍历这两个数组,找到相同的数字之后,就 ...

最新文章

  1. Java面向对象:覆写与重载
  2. 反射-获取java私有内部类反射类型、私有字段
  3. 01 辅助函数之加密函数
  4. 计算机网络同步技术,计算机网络同步技术
  5. 2018推荐的android手机,外媒推荐:2018年下半年最值得期待的5款安卓手机
  6. MyCat 数据库分片极简体验
  7. linux 移动硬盘 优化,不花一分钱,给移动硬盘加速
  8. 测试员,你该如何面对自己30岁后的下坡路?
  9. rrpp协议如何修改_RRPP协议做为高级网络工程师不能不懂的技术带你快速学习
  10. 米莱迪机器人加物理攻击_游戏中的那些事:米莱迪物理伤害,这个皮肤没见过,蔡文姬一直出错装...
  11. 空气污染扩散模型-高斯烟羽烟团模型原理及GIS应用示例
  12. Github优秀开源项目
  13. 示波器上1G/S 100MHZ的含义
  14. What is Dymola?---Dymola的特点和架构
  15. 一个完整机器学习项目的基本流程
  16. 测试硬件工程师常用英语单词
  17. 高等工程数学(一):线性空间
  18. Holder 方式的单例
  19. 以云数据库产品为例深度对比分析:华为云更安全还是阿里云更安全?
  20. 基于决策树的交通拥堵成因分析

热门文章

  1. Hadoop数据倾斜及解决办法
  2. c++ 数组 结构体
  3. 2016021701 - 百位名人读书心法01
  4. 08年1月Gartner商务智能平台魔法四分区
  5. [转]一份ASP内存的释放的实验报告
  6. 中级统计师基础知识中计算机,【2014年中级统计师《统计基础理论及相关知识》预习:计算机操作系统】- 环球网校...
  7. mysql 当前用户连接数_实战:判断mysql中当前用户的连接数-分组淘选
  8. jsp页面获取后台传过来的list集合的长度
  9. 数据结构与算法一 - 二叉树基础
  10. 讲解web服务所涉及到的重要知识点