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 22 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
python回调函数中使用多线程的方法
Dec 25 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
Flask框架Jinjia模板常用语法总结
Jul 19 Python
Python List cmp()知识点总结
Feb 18 Python
Python中pymysql 模块的使用详解
Aug 12 Python
python线程join方法原理解析
Feb 11 Python
python 子类调用父类的构造函数实例
Mar 12 Python
python中安装django模块的方法
Mar 12 Python
Django配置Bootstrap, js实现过程详解
Oct 13 Python
如何通过一篇文章了解Python中的生成器
Apr 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检测文件编码的方法示例
2014/04/25 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
js玩一玩WSH吧
2007/02/23 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
小学教师评语大全
2014/04/23 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
党支部培养考察意见
2015/06/02 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL