问题如下:

给定两个数组,写一个方法来计算它们的交集。例如:
给定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].注意:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。
跟进:如果给定的数组已经排好序呢?你将如何优化你的算法?
如果 nums1 的大小比 nums2 小很多,哪种方法更优?
如果nums2的元素存储在磁盘上,内存是有限的,你不能一次加载所有的元素到内存中,你该怎么办?

自己的解法:

class Solution {public int[] intersect(int[] nums1, int[] nums2) {HashMap<Integer,Integer> hashMap = new HashMap<>();ArrayList<Integer> result = new ArrayList<>();if (nums1.length > 0){for (int i =0;i<=nums1.length-1;i++){Integer temp = hashMap.get(nums1[i]);if (temp == null){hashMap.put(nums1[i],1);}else {hashMap.put(nums1[i],temp+1);}}for(int j=0;j<=nums2.length-1;j++){Integer temp = hashMap.get(nums2[j]);if (temp != null){result.add(nums2[j]);if (temp> 1){hashMap.put(nums2[j],temp-1);}else {hashMap.remove(nums2[j]);}}}}Integer[] integers = new Integer[result.size()];result.toArray(integers);int tmpInt[] = new int[result.size()];for (int i = 0; i < integers.length; i++) {tmpInt[i] = integers[i];}return tmpInt;}
}

思路: 1.先遍历数组1,将数组的每一项存入一个hashMap,如果一个元素出现多次则hashmap的value+1

2.遍历数组2,判断当前元素在hashmap中是否存在,如果存在就将这个元素加入到result中

3.判断当前元素的value,如果大于1则减1,否则将这个元素的key从hash中移除,

4.最终得到的就是所求的两个数组重复的部分

leet给的最优解

class Solution {public int[] intersect(int[] nums1, int[] nums2) {int len1 = nums1.length;int len2 = nums2.length;int len = len1 > len2 ? len2 : len1;Arrays.sort(nums1);Arrays.sort(nums2);int[] nums = new int[len];int k = 0;int curr1, curr2 = 0;for(int i = 0, j = 0; i < len1 && j < len2;) {curr1 = nums1[i];curr2 = nums2[j];if(curr1 == curr2) {nums[k] = curr1;k += 1;i += 1;j += 1;} else if(curr1 < curr2) {i += 1;} else {j += 1;}}return Arrays.copyOfRange(nums, 0, k);     }
}

尝试理解一下思路:

  1.找到两个数组中相对较短的哪一个

  2.对两个数组进行排序

  3.从0开始遍历两个数组,判断当前遍历到的数组1和数组2元素是否相等,如果相等表示两个数组重复的部分开始,将这个元素放在返回数组中指示标志k所在的位置然后k+1

  4.遍历玩两个数组后对返回数组进行截取,得到重复部分的数组

转载于:https://www.cnblogs.com/beliveli/p/9015085.html

leetCode 两个数组的交集 II 问题记录相关推荐

  1. leetcode 两个数组的交集 II

    61 / 61 个通过测试用例 状态:通过 执行用时:2 ms 内存消耗:36.6 MB class Solution {//本代码来自[email protected]进击之路public int[ ...

  2. leetcode初级算法4.两个数组的交集 II

    leetcode初级算法4.两个数组的交集 II 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法:(总结在代码中) public int[] intersect(int[] nums1, in ...

  3. 两个对象数组交集_yiduobo的每日leetcode 349.两个数组的交集 amp;amp; 350.两个数组的交集II...

    祖传的手艺不想丢了,所以按顺序写一个leetcode的题解.计划每日两题,争取不卡题吧 349.两个数组的交集https://leetcode-cn.com/problems/intersection ...

  4. leetcode系列-350.两个数组的交集II

    leetcode系列–第350题.两个数组的交集II 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集. 返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一 ...

  5. LeetCode算法题350:两个数组的交集II(Intersection of Two Arrays II)

    技术交流可以加: 本人微信:xcg852390212 本人qq:852390212 学习交流qq群1(已满): 962535112 学习交流qq群2: 780902027 两个数组的交集II Leet ...

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

    350. 两个数组的交集 II 难度简单640收藏分享切换为英文接收动态反馈 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集.返回结果中每个元素出现的次数,应与元素在两 ...

  7. 两个数组的交集 II

    两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 ...

  8. LeetCode 350. 两个数组的交集 II ntersection of Two Arrays II

    Table of Contents 一.中文版 二.英文版 三.My answer 四.解题报告 一.中文版 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2 ...

  9. Leetcode 350. 两个数组的交集 II 解题思路及C++实现

    解题思路: 和349. 两个数组的交集 这道题目很相似,这道题只是在返回的数组中,多了重复的数字,其实相较于349题,350题更简单. 先对两个数组进行排序,然后遍历这两个数组,找到相同的数字之后,就 ...

最新文章

  1. mpvue 引入自己创建的js 文件 到其他的文件中
  2. ORACLE 将SQL的执行脚本返回值传给SHELL
  3. NHibernate:no persister for 异常
  4. ksoap2-android Project
  5. 【kafka】kafka RecordAccumulator封装消息流程
  6. SAP License:煤化工行业名词MTOMTP
  7. 开博1个月不到,照样可以申请到text-link-ads
  8. 文本文件的输入输出流(这里的重点在于字符集问题)
  9. 56个民族静态字典代码创建sql语句
  10. 轻量级深度神经网络推理引擎——阿里巴巴的 MNN
  11. 3D变化——旋转的立方体
  12. Material-design icon生成插件
  13. cad无法安装_CAD软件下载好了,为什么安装不上?有两个原因,解决方法在这
  14. 日记侠:如何用手机月入万元,只需从这5步开始
  15. 基于Redis生成递增序号
  16. 云原生关乎文化,而不是容器
  17. [ 习题 ] 句子简化题 细节题 排除题
  18. IT牛们的bat面试心得与经验总结
  19. Arithmetic Slices 算术序列
  20. 2021年上海市安全员C证考试报名及上海市安全员C证试题及解析

热门文章

  1. IE – File - Work Offline
  2. 在linux下安装星际译王
  3. asp.net 中GridView控件实现全选及反选的功能
  4. Python函数式编程——map()、reduce()
  5. golang中的文件读写
  6. 前端三十二:超链接(a标签)
  7. C六:指针可以比较大小
  8. Leetcode PHP题解--D57 762. Prime Number of Set Bits in Binary Representation
  9. 聊聊flink的ConnectionManager
  10. linux redhat 红帽 centos 命令格式