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不规范的日期字符串处理类
Jun 10 Python
python 中random模块的常用方法总结
Jul 08 Python
python实现遍历文件夹修改文件后缀
Aug 28 Python
Python基础教程之异常详解
Jan 10 Python
djano一对一、多对多、分页实例代码
Aug 16 Python
Python表达式的优先级详解
Feb 18 Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
Sep 04 Python
python爬虫分布式获取数据的实例方法
Nov 26 Python
Python操作Excel的学习笔记
Feb 18 Python
浅析Python OpenCV三种滤镜效果
Apr 11 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
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
Pytorch之Variable的用法
2019/12/31 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
上学迟到的检讨书
2014/01/11 职场文书
十佳护士先进事迹
2014/05/08 职场文书
法定代表人证明书
2014/11/28 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL