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连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 Python
在Python编程过程中用单元测试法调试代码的介绍
Apr 02 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
详解Python3注释知识点
Feb 19 Python
django的分页器Paginator 从django中导入类
Jul 25 Python
Django缓存系统实现过程解析
Aug 02 Python
python对常见数据类型的遍历解析
Aug 27 Python
python实现多进程通信实例分析
Sep 01 Python
TensorFlow实现自定义Op方式
Feb 04 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
Feb 10 Python
Python 必须了解的5种高级特征
Sep 10 Python
Python读写锁实现实现代码解析
Nov 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
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
2008/03/28 PHP
php中opendir函数用法实例
2014/11/15 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
python处理圆角图片、圆形图片的例子
2014/04/25 Python
Python实现抓取城市的PM2.5浓度和排名
2015/03/19 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
Python Series从0开始索引的方法
2018/11/06 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
python 经典数字滤波实例
2019/12/16 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
Kmeans均值聚类算法原理以及Python如何实现
2020/09/26 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
大学生的创业计划书就该这么写
2014/01/30 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
银行类自荐信
2014/02/04 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
煤矿安全保证书
2015/02/27 职场文书
八一建军节主持词
2015/07/01 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL