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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
在Python中封装GObject模块进行图形化程序编程的教程
Apr 14 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
windows下numpy下载与安装图文教程
Apr 02 Python
Python单元和文档测试实例详解
Apr 11 Python
python pandas时序处理相关功能详解
Jul 03 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
Nov 15 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
Python dict的常用方法示例代码
Jun 23 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令牌 Token改进版
2008/07/18 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
基于php判断客户端类型
2016/10/14 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
javascript 框架小结 个人工作经验
2009/06/13 Javascript
JavaScript学习历程和心得小结
2010/08/16 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
Python logging模块学习笔记
2014/05/24 Python
Python 数据结构之队列的实现
2017/01/22 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
python实现简单名片管理系统
2018/11/30 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
班会关于环保演讲稿
2013/12/29 职场文书
九年级家长会邀请函
2014/01/15 职场文书
统计岗位职责
2014/02/21 职场文书
机械制造毕业生求职信
2014/03/03 职场文书
自强之星事迹材料
2014/05/12 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
库房管理员岗位职责
2015/02/12 职场文书
保研推荐信范文
2015/03/25 职场文书
党员心得体会范文2016
2016/01/23 职场文书
python实现进度条的多种实现
2021/04/29 Python