leetcode350之实现求解两数组交集(包含重复元素)
时间:2020-05-28
本文章向大家介绍leetcode350之实现求解两数组交集(包含重复元素),主要包括leetcode350之实现求解两数组交集(包含重复元素)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
给定两个数组,编写一个函数来计算它们的交集。
说明:
- 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
- 我们可以不考虑输出结果的顺序
1 def binarySearch(nums, target): 2 ''' 3 在数组中二分查找指定元素 4 :param nums: 5 :param target: 6 :return: 7 ''' 8 left, right = 0, len(nums) - 1 9 while left <= right: 10 mid = left + (right - left) // 2 11 if nums[mid] == target: 12 return True 13 elif nums[mid] < target: 14 left = mid + 1 15 else: 16 right = mid - 1 17 18 return False 19 20 21 def intersect1(num1, num2): 22 ''' 23 求两个列表交集元素 24 :param num1: 25 :param num2: 26 :return: 27 ''' 28 array1 = [] 29 num1 = sorted(num1) 30 for i in num2: 31 if binarySearch(num1, i): 32 array1.append(i) 33 num1.remove(i) 34 array1 = sorted(array1) 35 36 return array1 37 38 39 print("==========测试intersect()==========") 40 nums1 = [1, 3, 1, 2, 4, 2] 41 nums2 = [4, 8, 1, 2, 1, 3, 8, 2] 42 array1 = intersect1(nums1, nums2) 43 print("array1=", array1) 44 45 46 def intersect2(nums1, nums2): 47 ''' 48 49 :param nums1: 50 :param nums2: 51 :return: 52 ''' 53 array2 = [] 54 temp_array2 = set(nums1) & set(nums2) # temp_array2 is a set 55 for i in temp_array2: 56 array2 += [i] * min(nums1.count(i), nums2.count(i)) 57 return array2 58 59 60 print("+++++++++++测试intersect2()+++++++++++++") 61 array2 = intersect2(nums1, nums2) 62 print("array2=", array2) 63 64 65 def intersect3(nums1, nums2): 66 ''' 67 68 :param nums1: 69 :param nums2: 70 :return: 71 ''' 72 array3 = [] 73 for i in nums1: 74 if i in nums2: 75 array3.append(i) 76 nums2.remove(i) 77 array3 = sorted(array3) 78 return array3 79 80 81 print("----------------测试intersect3()-----------") 82 array3 = intersect3(nums2, nums1) 83 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]
原文地址:https://www.cnblogs.com/rounie/p/12983886.html
- Tomcat就是这么简单
- Servlet第三篇【request和response介绍、response的常见应用】
- 通过java来格式化sql语句(r4笔记第61天)
- Servlet第四篇【request对象常用方法、应用】
- Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】
- Java类加载器(用户自定义类加载器实现)
- Servlet第六篇【Session介绍、API、生命周期、应用、与Cookie区别】
- 一个oracle蠕虫病毒 (r4笔记第60天)
- 提高效率,eclipse上你可能不知道的技巧
- AJAX入门这一篇就够了
- 014 Java的反射机制
- XML+JSON面试题都在这里
- 客户关系管理系统
- 016 Java中的动态代理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JS 实现点击按钮复制一段文字
- Python操作Excel合并单元格
- CRM第一天:客户关系管理系统的环境搭建和注册
- lambda 表达式导致 Arthas 无法 redefine 的问题
- 战士上战场,还不会部署kubernetes集群?
- 使用docker python 的最新版本以及pip 安装模块
- Java面试题总结之数据库与SQL语句
- Python脚本命令行执行隐藏密码等敏感信息
- 使用SRS Docker搭建自己的直播平台
- @陈同学的专属Python教程之快速使用
- MYSQL错误码2059解决办法
- @陈同学的专属Python教程之函数
- 微信小程序的Web API接口设计及常见接口实现
- @陈同学的专属Python教程之常见数据结构
- 用易语言写个简单的小爬虫其中的关键点