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创建XML文档
Mar 01 Python
Python使用稀疏矩阵节省内存实例
Jun 27 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
浅谈使用Python内置函数getattr实现分发模式
Jan 22 Python
Django学习教程之静态文件的调用详解
May 08 Python
python批量复制图片到另一个文件夹
Sep 17 Python
Python面向对象之类的封装操作示例
Jun 08 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
Python中and和or如何使用
May 28 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 simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
namespace.js Javascript的命名空间库
2011/10/11 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
详解Python的Django框架中的中间件
2015/07/24 Python
Python科学计算之NumPy入门教程
2017/01/15 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
python网络编程之五子棋游戏
2020/05/14 Python
通过实例简单了解Python sys.argv[]使用方法
2020/08/04 Python
在PyCharm中安装PaddlePaddle的方法
2021/02/05 Python
大学生毕业自我评价范文分享
2013/11/07 职场文书
甲方资料员岗位职责
2013/12/13 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
委托协议书范本
2014/04/22 职场文书
五四青年节演讲稿
2014/05/26 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记