Leetcode刷题100天—350. 两个数组的交集 II(哈希表)—day12

网友投稿 673 2022-05-29

前言:

Leetcode刷题100天—350. 两个数组的交集 II(哈希表)—day12

大家好,我叫运智

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

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9]

说明:

输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。

我们可以不考虑输出结果的顺序。

进阶:

如果给定的数组已经排好序呢?你将如何优化你的算法?

如果 nums1 的大小比 nums2 小很多,哪种方法更优?

如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?

来源:力扣(leetcode

链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

package 哈希表; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.swing.SpringLayout.Constraints; public class _350_两个数组的交集II { public static int[] intersect(int[] nums1, int[] nums2) { if (nums1.length > nums2.length) { return intersect(nums2, nums1); } Map map = new HashMap(); // 通过for循环将获取到的数据存入到哈希表中,如果出现重复的数据就+1 for (int num : nums1) { System.out.print(num); int count = map.getOrDefault(num, 0) + 1; map.put(num, map.getOrDefault(num, 0)+1); } // 定义存放返回的数组 int[] intersection = new int[nums1.length]; System.out.print(map); int index = 0; for (int num : nums2) { // 获取对应键的值 int count = map.getOrDefault(num, 0); // 如果键值大于0就存入数组中 if (count > 0) { System.out.println(count); intersection[index++] = num; count--; System.out.print(num); // 重新更新哈希 if (count > 0) { map.put(num, count); } else {//否则就移除 map.remove(num); System.out.println(map); } } } // array=Arrays.copyOfRange(oringinal,int from, int to) 此时要注意下标的变化, //array拷贝original数组从from下标开始,一直到to下标结束,注意包含from下标,不包含to下标,是左闭右开区间。 System.out.println(index); // 提取0~index的数组长度就可以了,因为后面没有值了 return Arrays.copyOfRange(intersection, 0, index); } public static void main(String args[]) { int nums1[]=new int[3]; int nums2[]=new int[5]; nums1[0]=4; nums1[1]=9; nums1[2]=5; nums2[0]=9; nums2[1]=4; nums2[2]=9; nums2[3]=8; nums2[4]=4; // System.out.print(nums1); int[] c=intersect(nums1, nums2); for(int num:c) { System.out.print(num); } } }

本人csdn博客:https://blog.csdn.net/weixin_46654114

转载说明:跟我说明,务必注明来源,附带本人博客连接。

数据结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【华为云社区 19年7月刊】本期推荐:如何避免DevOps变革的六大“焦油坑”
下一篇:基于北斗和4G Cat1模组的智慧物流开发(八)直播课和学习感想
相关文章