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基础教程之udp端口扫描
Feb 10 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
Dec 12 Python
python中解析json格式文件的方法示例
May 03 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
Python面向对象程序设计之私有属性及私有方法示例
Apr 08 Python
python调用Matplotlib绘制分布点图
Oct 18 Python
python中return的返回和执行实例
Dec 24 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
python实现excel公式格式化的示例代码
Dec 23 Python
详解Python自动化之文件自动化处理
Jun 21 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 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/12/06 PHP
PHP与SQL注入攻击[二]
2007/04/17 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
php的socket编程详解
2016/11/20 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
Jquery操作cookie记住用户名
2016/03/29 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python实现telnet服务器的方法
2015/07/10 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
python装饰器使用实例详解
2019/12/14 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
通信生自我鉴定
2014/01/18 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
歌舞青春观后感
2015/06/10 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
nginx 配置指令之location使用详解
2022/05/25 Servers