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根据经纬度计算距离示例
Feb 16 Python
Python判断文件和文件夹是否存在的方法
May 21 Python
python如何查看系统网络流量的信息
Sep 12 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
python实现感知器
Dec 19 Python
Python生成指定数量的优惠码实操内容
Jun 18 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
Jun 19 Python
利用jupyter网页版本进行python函数查询方式
Apr 14 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
Python使用socket模块实现简单tcp通信
Aug 18 Python
Python编程中内置的NotImplemented类型的用法
Mar 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 程式大小
2006/12/06 PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
php实现rc4加密算法代码
2012/04/25 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
详解PHP数组赋值方法
2015/11/07 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
javascript jQuery插件练习
2008/12/24 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
JsChart组件使用详解
2018/03/04 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
2019/08/02 jQuery
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
Python使用django搭建web开发环境
2017/06/09 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
医大实习自我鉴定
2013/12/07 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
求职自我评价怎么写
2015/03/09 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书