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字典get()方法用法分析
Apr 17 Python
在Python的Flask框架下收发电子邮件的教程
Apr 21 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
Django实现简单网页弹出警告代码
Nov 15 Python
python import 上级目录的导入
Nov 03 Python
Python文件的操作示例的详细讲解
Apr 08 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
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
13个PHP函数超实用
2015/10/21 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python实现简单HTML表格解析的方法
2015/06/15 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
幼儿园大班新学期寄语
2014/01/18 职场文书
计算机专业职业规划
2014/02/28 职场文书
关于工作经历的证明书
2014/10/11 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
培训班开班主持词
2015/07/02 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
行为习惯主题班会
2015/08/14 职场文书
图解上海144收音机
2021/04/22 无线电
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL