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合并文本文件示例
Feb 07 Python
python unittest实现api自动化测试
Apr 04 Python
Django 跨域请求处理的示例代码
May 02 Python
python使用turtle库与random库绘制雪花
Jun 22 Python
python+unittest+requests实现接口自动化的方法
Nov 29 Python
Django Rest framework频率原理与限制
Jul 26 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
Python文件操作基础流程解析
Mar 19 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
node跨域请求方法小结
2017/08/25 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
JS实现简易留言板特效
2019/12/23 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
Python yield使用方法示例
2013/12/04 Python
Python验证码识别的方法
2015/07/10 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
师范生实习个人的自我评价
2013/09/28 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
搬迁通知
2015/04/20 职场文书
资产移交协议书
2016/03/24 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫