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实现带验证码网站的自动登陆实现代码
Jan 12 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
Django读取Mysql数据并显示在前端的实例
May 27 Python
Face++ API实现手势识别系统设计
Nov 21 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
Jun 21 Python
Python多版本开发环境管理工具介绍
Jul 03 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
Pycharm安装并配置jupyter notebook的实现
May 18 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
利用Python判断你的密码难度等级
Jun 02 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/06/07 PHP
php发送与接收流文件的方法
2015/02/11 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
JavaScript 字符编码规则
2009/05/04 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
vue实现商城上货组件简易版
2017/11/27 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
Django框架model模型对象验证实现方法分析
2019/10/02 Python
简单了解python数组的基本操作
2019/11/26 Python
Python语言异常处理测试过程解析
2020/01/08 Python
Python小白垃圾回收机制入门
2020/06/09 Python
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
搬家公司的创业计划书
2014/01/01 职场文书
初三开学计划书
2014/04/27 职场文书
党员教师一句话承诺
2014/05/30 职场文书
文明寝室标语
2014/06/13 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
驳回起诉裁定书
2015/05/19 职场文书
安全教育观后感
2015/06/17 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
go goroutine 怎样进行错误处理
2021/07/16 Golang
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android