LeetCode——350. 两个数组的交集 II

题目描述:

给定两个数组,编写一个函数来计算它们的交集。

示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]

说明:
输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
我们可以不考虑输出结果的顺序。

这个是我自己一开始写出来的算法,有一点繁琐,但是理解并不困,使用了排序以及链表

public int[] intersect(int[] nums1, int[] nums2) {ArrayList<Integer> list = new ArrayList<>();ArrayList<Integer> nums2list = new ArrayList<>();//先将它们各自进行升序排序Arrays.sort(nums1);Arrays.sort(nums2);//排除掉一定没有交集的情况,需要考虑到数组为空时数组下标越界异常if(nums1.length==0 || nums2.length==0)return new int[0];else if(nums1[nums1.length-1]<nums2[0] || nums1[0]>nums2[nums2.length-1]){return new int[0];}//接下来是需要正常比较的情况for (int m : nums2) {nums2list.add(m);}//nums2list.forEach(System.out::println);for (int i : nums1) {for (Integer j : nums2list) {if(i==j){list.add(i);nums2list.remove(j);//删除之后就找不到下一个了break;}}}int[] res = new int[list.size()];for (int i = 0; i < list.size(); i++) {res[i]=list.get(i);}//测试用for (int i : res) {System.out.println(i);}return res;}

然后我在力扣评论区卡拿到有位大佬总结出来好几种

class Solution {/*** 使用集合实现*/public int[] intersect_1(int[] nums1, int[] nums2) {List<Integer> list1 = new ArrayList<>();for (int num : nums1) {list1.add(num);}List<Integer> list2 = new ArrayList<>();for (int num : nums2) {if (list1.contains(num)) {list2.add(num);// 从 list1 除去已匹配的数值list1.remove(Integer.valueOf(num));}}int[] res = new int[list2.size()];int i = 0;for (int num : list2) {res[i++] = num;}return res;}/*** 使用集合的实现*/public int[] intersect_2(int[] nums1, int[] nums2) {List<Integer> list1 = Arrays.stream(nums1).boxed().collect(Collectors.toList());List<Integer> list2 = Arrays.stream(nums2).boxed().filter(num -> {if (list1.contains(num)) {list1.remove(num);return true;}return false;}).collect(Collectors.toList());int[] res = new int[list2.size()];for (int i = 0; i < list2.size(); i++) {res[i] = list2.get(i);}return res;}/*** 使用映射实现*/public int[] intersect_3(int[] nums1, int[] nums2) {Map<Integer, Integer> map = new HashMap<>(nums1.length);// 将 nums1 出现的数值及频次放入映射中for (int num : nums1) {Integer count = map.get(num);if (count == null) {map.put(num, 1);} else {map.put(num, ++count);}}List<Integer> list = new ArrayList<>();for (int num : nums2) {// 获取映射中该数值出现的频次Integer count = map.get(num);if (count != null && count != 0) {list.add(num);// 注意每次匹配后,该数值的频次需要减 1(nums1 和 nums2 匹配的数值的频次要相同)map.put(num, --count);}}int[] res = new int[list.size()];for (int i = 0; i < list.size(); i++) {res[i] = list.get(i);}return res;}/*** 排序预处理*/public int[] intersect(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);List<Integer> list = new ArrayList<>();for (int i = 0, j = 0; i < nums1.length && j < nums2.length; ) {if (nums1[i] < nums2[j]) {i++;} else if (nums1[i] > nums2[j]) {j++;} else {list.add(nums1[i]);i++;j++;}}int[] res = new int[list.size()];for (int i = 0; i < list.size(); i++) {res[i] = list.get(i);}return res;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第八章 基本脚本编译

key words : 执行多个命令的方法 、 创建与执行脚本、反引号 、数学计算8.1 执行多个命令的方法:1、在每个命令间用;隔开[rootlocalhost ~]# date;who2011年 05月 29日 星期日 08:44:32 EDTroot :0 2011-05-29 08:32root pts/0 2011-05-29 08:33 (:0.…

LeetCode——面试题 08.01. 三步问题

题目描述&#xff1a; 三步问题。有个小孩正在上楼梯&#xff0c;楼梯有n阶台阶&#xff0c;小孩一次可以上1阶、2阶或3阶。 实现一种方法&#xff0c;计算小孩有多少种上楼梯的方式。 结果可能很大&#xff0c;你需要对结果模1000000007。示例1:输入&#xff1a;n 3 输出&am…

艾伟:ASP.NET 与 AJAX的实现方式

Ajax 应该不是一项技术&#xff0c;是一种思想而已&#xff0c;跟 ASP.NET 以及其它 Web 开发语言没有什么太大关系&#xff0c;这里只是谈谈 ASP.NET 中目前使用的 Ajax 技术以及其它一些实现 Ajax 的优秀框架。 Ajax 已经很流行一阵子了&#xff0c;现在谈 Ajax 觉得有点老土…

IDEA中的模块被识别为普通文件夹,图标为灰色的

现象&#xff1a; 所有图标都是灰色&#xff0c;不被识别为模块 解决办法&#xff1a; 打开settings—> Build,Execution,deployment—>maven —>ignored Files —>然后把你出问题的项目勾掉就恢复正常了额,图标啥的都恢复了

艾伟:WCF从理论到实践(2):决战紫禁之巅

本系列文章导航WCF从理论到实践(1)&#xff1a;揭开神秘面纱WCF从理论到实践(2)&#xff1a;决战紫禁之巅WCF从理论到实践(3)&#xff1a;八号当铺之黑色契约WCF从理论到实践(4)&#xff1a;路在何方WCF从理论到实践(5)&#xff1a;Binding细解WCF从理论到实践(6)&#xff1a;W…

LeetCode——LCP 06.拿硬币

这个题简单到我觉得不用写思路&#xff0c;也没有啥坑。 class Solution {public int minCount(int[] coins) {int len coins.length;int count 0;for(int i0;i<len;i){countcoins[i]/2;if(coins[i]%20){continue;}else{count1;}}return count;} }

Linux 定时执行命令 crontab

语法介绍 使用权限 : root用户和crontab文件的所有者    crontab格式语法: crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]    说明 : crontab 是用来让使用者在固定时间或固定间隔执行程式之用&#xff0c;换句话说&#xff0c;也就是类似使用…

LeetCode——1710. 卡车上的最大单元数

力扣上提交的代码 class Solution {public int maximumUnits(int[][] boxTypes, int truckSize) {int res 0;//存储可以装载单元的最大总数//根据二维数组的第二列数据降序排列Arrays.sort(boxTypes,(o1, o2) -> o2[1]-o1[1]);for (int i 0; i<boxTypes.length &&…

黄聪:php中utf-8模板获取GB2312编码页面传递URL中文编码转换方法

$w中文参数; mb_convert_encoding($w, gb2312, utf-8)转载于:https://www.cnblogs.com/huangcong/archive/2011/09/03/2165339.html

狂神说JVM笔记

JVM探究 面试常见&#xff1a; 请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新?什么是OOM&#xff0c;什么是栈溢出StackOverFlowError? 怎么分析?JVM的常用调优参数有哪些?内存快照如何抓取&#xff0c;怎么分析Dump文件&#xff1f;谈谈JVM中&#xff0c;类加载器…

敏捷开发与中医理论系列之二:古法教学(软件教育,松结对编程,师徒制度)...

由来 中国古代的很多技术或艺术&#xff0c;都是没有学校教授的&#xff0c;譬如中医&#xff0c;戏曲&#xff0c;民间艺术&#xff0c;食品&#xff0c;酿酒……但却不乏流传千古的名家和作品&#xff0c;唯一问题就是流传缓慢&#xff0c;传内不传外&#xff0c;传男不传女……

Xshell连接远程Linux服务器失败Could not connect to ‘192.xxx.xx.xxx‘ (port 22): Connection failed.

问题描述&#xff1a; 我将自己的一台Ubuntu系统笔记本作为服务器&#xff0c;然后使用另一台win10系统的Xshell去远程连接该服务器&#xff0c;始终不成功。 【备注】这个远程连接解决的是同一局域网中的远程&#xff0c;算不上真正的远程&#xff0c;在判断两者之间可否远程…

ajax 同步加载数据

var data $.ajax({url:"same.php",type:GET,async:false,cache:false}).responseText;主要是 async 参数

同局域网下的两台主机间互相ping不通是为什么

现象描述&#xff1a; 经过 ipconfig 命令&#xff08;Linux下 ifconfig 命令&#xff09;查询两台互相ping不通的主机的 ip 和网关&#xff0c;发现两台主机的路由网关都是192.168.0.1&#xff0c;但是他们之间互相ping不通&#xff0c;后面经过检查注意到&#xff0c;一台主…

HDU-3460 Ancient Printer 字典树

该题题意是求给定的字符串集用一个打字机来打出所有的字符串&#xff08;最后一个&#xff09;&#xff0c;顺序可以打乱&#xff0c;每次操作可以向打字机的末尾添加一个字符删除一个字符以及打印一个单词。这里有一个很强大的想法&#xff0c;那就是先假设每个单词都打印出来…

Linux下查看CPU个数(逻辑个数和物理个数)

CPU个数CPU颗数*CPU核数。 总逻辑CPU数 物理CPU个数 * 每颗物理CPU的核数 * 超线程数 //查询逻辑CPU总数 $ grep -c processor /proc/cpuinfo 4//查询物理CPU个数 $ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 1//查询每颗物理CPU的核数 $ cat /pr…

【博客话题】坚持的背影--记我的入门老师

光阴似箭&#xff0c;一晃十年过去了&#xff0c;人生中又会有几个十年呢&#xff1f;只是记忆中那黑板前奋笔疾书坚持的背影依然那么清晰的出现在眼前&#xff0c;时时提醒我要学会坚持永不放弃。在第27个教师节即将来临之际&#xff0c;谨以此文敬献给我的恩师和所有在教育战…

XShell远程连接LInux服务器(地址端口映射方法)

所实现的功能&#xff1a; 这篇文章主要是记录我在非同一局域网下用win10系统的Xshell去连接Linux系统服务器。 环境&#xff1a;一台win10主机&#xff0c;已安装好Xshell7&#xff0c;局域网ip:192.168.0.132 一台Linux主机&#xff0c;将其作为远程服务器使用&#xff0c;…

如何评价个人在软件开发团队中的绩效

我认为一个有效评价手段应该达到以下目的&#xff1a; 1、 对团队&#xff1a;让整个团队进入愉快高效工作状态 2、 对“高手”&#xff1a;奖励干活多干活好的人 3、 对“低手”&#xff1a;从制度上杜绝磨洋工的现象 4、 对“中手”&#xff1a;提供工作认真但是水平有待…

IDEA部署Tomcat报错[RMI TCP Connection(6)-127.0.0.1]

> 严重 [RMI TCP Connection(6)-127.0.0.1] > org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file该错误出现的原因是Tomcat初始化失败。 一定一定要检查…