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 24 Python
利用pyinstaller打包exe文件的基本教程
May 02 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
python连接PostgreSQL过程解析
Feb 09 Python
python实现翻译word表格小程序
Feb 27 Python
利用python生成照片墙的示例代码
Apr 09 Python
Python 字典中的所有方法及用法
Jun 10 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
python中scrapy处理项目数据的实例分析
Nov 22 Python
python神经网络学习 使用Keras进行回归运算
May 04 Python
使用pd.merge表连接出现多余行的问题解决
Jun 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函数
2010/01/11 PHP
PHP中用hash实现的数组
2011/07/17 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
微信小程序入门教程
2016/11/18 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
python生成ppt的方法
2018/06/07 Python
Django框架验证码用法实例分析
2019/05/10 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
施华洛世奇韩国官网:SWAROVSKI韩国
2018/06/05 全球购物
机修工岗位职责
2013/11/24 职场文书
群众路线教育实践活动方案
2014/02/02 职场文书
客服专员岗位职责
2014/02/28 职场文书
四风对照检查材料范文
2014/09/27 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
党员证明信
2015/06/19 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers
在Python 中将类对象序列化为JSON
2022/04/06 Python
vue实现简易音乐播放器
2022/08/14 Vue.js