leetcode350之实现求解两数组交集(包含重复元素)
给定两个数组,编写一个函数来计算它们的交集。
说明:
- 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
- 我们可以不考虑输出结果的顺序
- def binarySearch(nums, target):
- '''
- 在数组中二分查找指定元素
- :param nums:
- :param target:
- :return:
- '''
- left, right = 0, len(nums) - 1
- while left <= right:
- mid = left + (right - left) // 2
- if nums[mid] == target:
- return True
- elif nums[mid] < target:
- left = mid + 1
- else:
- right = mid - 1
- return False
- def intersect1(num1, num2):
- '''
- 求两个列表交集元素
- :param num1:
- :param num2:
- :return:
- '''
- array1 = []
- num1 = sorted(num1)
- for i in num2:
- if binarySearch(num1, i):
- array1.append(i)
- num1.remove(i)
- array1 = sorted(array1)
- return array1
- print("==========测试intersect()==========")
- nums1 = [1, 3, 1, 2, 4, 2]
- nums2 = [4, 8, 1, 2, 1, 3, 8, 2]
- array1 = intersect1(nums1, nums2)
- print("array1=", array1)
- def intersect2(nums1, nums2):
- '''
- :param nums1:
- :param nums2:
- :return:
- '''
- array2 = []
- temp_array2 = set(nums1) & set(nums2) # temp_array2 is a set
- for i in temp_array2:
- array2 += [i] * min(nums1.count(i), nums2.count(i))
- return array2
- print("+++++++++++测试intersect2()+++++++++++++")
- array2 = intersect2(nums1, nums2)
- print("array2=", array2)
- def intersect3(nums1, nums2):
- '''
- :param nums1:
- :param nums2:
- :return:
- '''
- array3 = []
- for i in nums1:
- if i in nums2:
- array3.append(i)
- nums2.remove(i)
- array3 = sorted(array3)
- return array3
- print("----------------测试intersect3()-----------")
- array3 = intersect3(nums2, nums1)
- print("array3=", array3)
输出:
- ==========测试intersect()==========
- array1= [1, 1, 2, 2, 3, 4]
- +++++++++++测试intersect2()+++++++++++++
- array2= [1, 1, 2, 2, 3, 4]
- ----------------测试intersect3()-----------
- array3= [1, 1, 2, 2, 3, 4]
leetcode350之实现求解两数组交集(包含重复元素)的更多相关文章
- JS判断数组是否包含某元素
我在学习ES6数组拓展时,发现了新增了不少了有趣的数组方法,突然想好工作中判断数组是否包含某个元素是非常常见的操作,那么这篇文章顺便做个整理. 1.for循环结合break 可能很多人第一会想到for ...
- JavaScript判断数组是否包含指定元素的方法
本文实例讲述了JavaScript判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 /** ...
- JS 验证数组中是否包含重复元素
验证JS中是否包含重复元素,有重复返回true:否则返回false 方案一. function isRepeat(data) { var hash = {}; for (var i in data) ...
- [LeetCode] 217. Contains Duplicate 包含重复元素
Given an array of integers, find if the array contains any duplicates. Your function should return t ...
- [LeetCode] 220. Contains Duplicate III 包含重复元素 III
Given an array of integers, find out whether there are two distinct indices i and j in the array suc ...
- [LeetCode] 219. Contains Duplicate II 包含重复元素 II
Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...
- 获取JS数组中所有重复元素
//获取数组内所有重复元素,并以数组返回 //例:入参数组['1','2','4','7','1','2','2'] 返回数组:['1','2'] function GetRepeatFwxmmc(a ...
- 从n个元素中选择k个的所有组合(包含重复元素)
LeetCode:Combinations这篇博客中给出了不包含重复元素求组合的5种解法.我们在这些解法的基础上修改以支持包含重复元素的情况.对于这种情况,首先肯定要对数组排序,以下不再强调 修改算法 ...
- Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un
ylbtech-Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素 1.返回顶部 1. Java 实例 - 查找数组中的重复元素 Java 实例 以下实例 ...
随机推荐
- [bzoj2427]P2515 [HAOI2010]软件安装(树上背包)
tarjan+树上背包 题目描述 现在我们的手头有 \(N\) 个软件,对于一个软件 \(i\),它要占用 \(W_i\) 的磁盘空间,它的价值为 \(V_i\).我们希望从中选择一些软件安装到一台磁 ...
- MySQL高级(十三)--- 表锁
前言:锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算机资源(如CPU.RAM.I/O等)的争用外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是 ...
- vue 比 js的强大
//js写留言板 <!DOCTYPE html><html lang="en"><head> <meta charset="UT ...
- 学习Vue第一节,Vue的模式与写法格式
引用Vue <script src="js/vue-2.4.0.js" type="text/javascript" charset="utf- ...
- php报错:strip_tags() expects parameter 1 to be string, array given
囧....... 这个表示参数需要字符串,而你传入了数组,所以出错了~ 检查下函数或者方法是否正确,还有参数
- 自己动手写RPC
接下来2个月 给自己定个目标 年前 自己动手做个RPC 框架 暂时技术选型 是 dotcore + netty + zookeeper/Consul
- python3语法学习第四天--字符串
字符串:是python中的常用数据类型 Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用 访问字符串的值: 下标和分片截取 字符串的连接:‘+’ 字符串内置函数挺多,选 ...
- linux --开机自动挂载硬盘【转】
转:http://c.biancheng.net/view/900.html 了解了 mount 命令之后,读者可能会问,系统如何在开机时自动挂载硬盘,它又是怎么知道哪些分区是需要挂载的呢? 很简单, ...
- js实现图片幻灯片效果
其效果是点击图片切换到下一张图片 首先准备五张图片 <ul class="imge"> <li><img src="images/1.jpg ...
- python之感知器-从零开始学深度学习
感知器-从零开始学深度学习 未来将是人工智能和大数据的时代,是各行各业使用人工智能在云上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习的学习历程. 我希望在学习过程中做到 ...