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中获取网页状态码的两个方法
Nov 03 Python
Python魔术方法详解
Feb 14 Python
Python中的多重装饰器
Apr 11 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
浅谈Python 的枚举 Enum
Jun 12 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 Python
python 日志 logging模块详细解析
Mar 31 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 Python
Python数据可视化图实现过程详解
Jun 12 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
Django扫码抽奖平台的配置过程详解
Jan 14 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设计模式之命令模式的应用详解
2013/05/21 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
sae使用smarty模板的方法
2013/12/17 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
TypeScript中的方法重载详解
2019/04/12 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
python单链表实现代码实例
2013/11/21 Python
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
特步官方商城:Xtep
2017/03/21 全球购物
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
采购助理岗位职责
2014/02/16 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
十八届三中全会感言
2014/03/10 职场文书
小学生新年寄语
2014/04/03 职场文书
甘南现象心得体会
2014/09/11 职场文书
软件测试专业推荐信
2014/09/18 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python