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 Django模板的使用方法(图文)
Nov 04 Python
Python生成随机数的方法
Jan 14 Python
Django开发中复选框用法示例
Mar 20 Python
python 日期操作类代码
May 05 Python
Python操作mongodb的9个步骤
Jun 04 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
Python爬虫文件下载图文教程
Dec 23 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
python__name__原理及用法详解
Nov 02 Python
使用python3 实现插入数据到mysql
Mar 02 Python
Python实现微信表情包炸群功能
Jan 28 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使用者状态管理功能的应用
2006/10/09 PHP
php获取汉字首字母的函数
2013/11/07 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
javascript实现画板功能
2020/04/12 Javascript
浅谈django orm 优化
2018/08/18 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
pycharm配置git(图文教程)
2019/08/16 Python
Python高级property属性用法实例分析
2019/11/19 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
资产经营总监岗位职责
2013/12/04 职场文书
先进工作者获奖感言
2014/02/08 职场文书
团代会开幕词
2015/01/28 职场文书
电影地道战观后感
2015/06/04 职场文书
Python基础详解之描述符
2021/04/28 Python
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫
Python os和os.path模块详情
2022/04/02 Python