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实现根据指定端口探测服务器/模块部署的方法
Aug 25 Python
Python中pip安装非PyPI官网第三方库的方法
Jun 02 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
python方法生成txt标签文件的实例代码
May 10 Python
python 异或加密字符串的实例
Oct 14 Python
python requests post多层字典的方法
Dec 27 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
May 13 Python
Django的性能优化实现解析
Jul 30 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
Nov 30 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 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异常处理浅析
2015/05/12 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
银行员工辞职信范文
2014/01/20 职场文书
采购部部长岗位职责
2014/02/06 职场文书
会计专业导师推荐信
2014/03/08 职场文书
个人委托书怎么写
2014/04/04 职场文书
机动车登记业务委托书
2014/10/08 职场文书