Python实现求两个数组交集的方法示例


Posted in Python onFebruary 23, 2019

本文实例讲述了Python实现求两个数组交集的方法。分享给大家供大家参考,具体如下:

一、题目

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

例1:

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

例2:

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

说明:

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

二、解法

首先把两个数组都排序,然后两个数组进行遍历比较,
当值相等时,两个数组都往后移动一位,并且相等的那个值加入到 result 数组中
当值不相等时,值小的数组往后移动一位(因为我们已经排序过了,如果是值大的数组往后移动一位,那么肯定还是比值小的要大)

代码如下:

nums1.sort()
nums2.sort()
result = []
i, j = 0, 0
while i<len(nums1) and j<len(nums2):
  if nums1[i]==nums2[j]:
    result.append(nums1[i])
    i += 1
    j += 1
  elif nums1[i]>nums2[j]:
    j += 1
  elif nums1[i]<nums2[j]:
    i += 1
return result

时间 52ms,击败了 93%

本机测试代码如下:

# -*- coding:utf-8 -*-
nums1 = [1,2,2,1]
nums2 = [2,2]
nums1.sort()
nums2.sort()
result = []
i, j = 0, 0
while i<len(nums1) and j<len(nums2):
  if nums1[i]==nums2[j]:
    result.append(nums1[i])
    i += 1
    j += 1
  elif nums1[i]>nums2[j]:
    j += 1
  elif nums1[i]<nums2[j]:
    i += 1
print(result)

运行结果:

[2, 2]

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
深入理解Python 代码优化详解
Oct 27 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
Python实现提取XML内容并保存到Excel中的方法
Sep 01 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
flask框架单元测试原理与用法实例分析
Jul 23 Python
django ManyToManyField多对多关系的实例详解
Aug 09 Python
Django中的FBV和CBV用法详解
Sep 15 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
Python算法中的时间复杂度问题
Nov 19 Python
python DataFrame转dict字典过程详解
Dec 26 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
Python神奇的内置函数locals的实例讲解
Feb 22 #Python
Python玩转Excel的读写改实例
Feb 22 #Python
Python操作配置文件ini的三种方法讲解
Feb 22 #Python
Python使用pymongo库操作MongoDB数据库的方法实例
Feb 22 #Python
python调用虹软2.0第三版的具体使用
Feb 22 #Python
Python实现图片转字符画的代码实例
Feb 22 #Python
Python中正则表达式的用法总结
Feb 22 #Python
You might like
PHP 输出简单动态WAP页面
2009/06/09 PHP
javascript 小型动画组件与实现代码
2010/06/02 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
.net开发工程师面试题
2014/02/25 面试题
美德少年事迹材料500字
2014/08/19 职场文书
走群众路线剖析材料
2014/10/09 职场文书
银行给客户的感谢信
2015/01/23 职场文书
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android