349两个数组的交集

题目要求:

给定两个数组 nums1nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

示例 1:

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

思路

第一想法:

受到上一道242的影响,我觉得题目范围并不大的情况下,可以申请数组,空间换时间来解决问题。

困难:

在运行时发现返回数组的写法出了问题,因为我申请的返回数组的长度是定长的,而最后人家要的返回的很简洁。所以得先确定这个返回数组有多长。

错误解法:

class Solution {public int[] intersection(int[] nums1, int[] nums2) {/**返回交集,如果以值作为下标索引,出现次数作为值创建一个哈希。因为题目条件的范围然后去遍历另外一个数组,判断每个值(即下标)在第一个数组中出现没有(即值)如果出现,则是要返回的。但是最后怎么返回呢? 还要再创建一个数组?怎么保证唯一输出*///新创建哈希数组对于nums1int[] arr = new int[1000];//进行哈希填充for(int i = 0;i < nums1.length;i ++){arr[nums1[i]] ++;}//创建另外一个新数组保存输出结果,但是这个数组长度得是动态的。这里出现问题了。int j = 0;int[] result = new int[j];//遍历另外一个数组for(int i = 0;i < nums2.length; i++){if(arr[nums2[i]] != 0){//为了保证唯一输出,只要交上了,就把哈希值改为0arr[nums2[i]] = 0;//放进输出数组result[j ++] = nums2[i];}}return result;}
}

正解:

使用set解决。目前自己对java中的哈希掌握的不好,老韩的教程得加把劲了。

代码

里面一些方法的使用原理不清楚。

class Solution {public int[] intersection(int[] nums1, int[] nums2) {//健壮性描述if(nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0){return new int[0];}//设置两个哈希Set<Integer> set1 = new HashSet<>();Set<Integer> reset = new HashSet<>();//对数组1进行哈希的填充for(int i : nums1){set1.add(i);}//遍历数组二,看里面是否有交集for(int j : nums2){if(set1.contains(j)){reset.add(j);}}//这个哈希已经完成了去重,现在考虑怎么返回输出(reset是集合?)//使用新数组接收int[] arr = new int[reset.size()];int j = 0;for(int i : reset){arr[j ++] = i;}return arr;}
}

349两个数组的交集(遗留问题)相关推荐

  1. 349. 两个数组的交集 golang

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

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

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

  3. Day 06 | 242.有效的字母异位词 349. 两个数组的交集 202.快乐数 1. 两数之和

    这四道题之前都做过!比第一次顺利一些,不过还是得看题解,磕磕绊绊的.不过我相信坚持下去一定会越来越好滴! 242.有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 ...

  4. LeetCode -349 两个数组的交集

    难度:简单 给定两个数组 nums1 和 nums2 ,返回它们的交集 .输出结果中的每个元素一定是唯一 的.我们可以不考虑输出结果的顺序 . 题目链接 LeetCode -349 两个数组的交集 S ...

  5. LeetCode 349 两个数组的交集

    349. 两个数组的交集 难度简单476收藏分享切换为英文接收动态反馈 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] ...

  6. Leetcode刷题100天—349. 两个数组的交集(集合)—day08

    前言: 作者:神的孩子在歌唱 大家好,我叫运智 349. 两个数组的交集 难度简单410收藏分享切换为英文接收动态反馈 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = ...

  7. LeetCode 349. 两个数组的交集【哈希表】

    349. 两个数组的交集 给定两个数组 nums1 和 nums2 ,返回 它们的交集 .输出结果中的每个元素一定是 唯一 的.我们可以 不考虑输出结果的顺序 . 示例 1: 输入:nums1 = [ ...

  8. 算法训练Day6 | LeetCode:242. 有效的字母异位词(数组作哈希表);349. 两个数组的交集(Set作哈希表);202.快乐数 (Set作哈希表);1. 两数之和(Map作哈希表)

    目录 LeetCode242. 有效的字母异位词 方法:数组作哈希表 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 Leetcode349. 两个数组的交集 方法一:用Set作HashMa ...

  9. 代码随想录算法训练营第六天|242. 有效的字母异位词,349. 两个数组的交集,202.快乐数,1. 两数之和

    242. 有效的字母异位词 力扣题目链接 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = ...

最新文章

  1. 【深度学习】with torch.no_grad的作用
  2. 05-数据类型、常量、变量
  3. SAP ADBC和JDBC的对比
  4. JavaScript | 如何为变量分配十进制,八进制和十六进制值?
  5. Jquery鼠标点击出现文字
  6. jquery datepicker 点击日期控件不会自动更新input的值
  7. 为什么GEO2R/GEOquery的结果可能是错的?
  8. Java 基础数据结构介绍
  9. Spring集成PageHelper的简单用法
  10. 模态识别在计算机视觉应用,相关性学习在计算机视觉任务中的研究与应用
  11. 序号47指标横向展示.xlsx_电力监控系统安全防护规定Akey310参数指标
  12. 台湾ICPlus IP178G/GH/GI 8接口FE以太网交换机芯片详细介绍
  13. Java、JSP汽车租赁管理系统
  14. ffmpeg命令下载MP4视频)
  15. 微信公众号检测本地App, 安装则打开,未安装则下载的实现方式
  16. 面试官:2 年招到 18 个前端教你怎么招人
  17. 计算机未来发展报告,2020-2026年中国电子计算机行业发展深度调研与未来趋势报告...
  18. 用单片机C语言开发雨滴智能屏小程序
  19. 前端HTML------负责网页结构
  20. bzoj 2876: [Noi2012]骑行川藏 二分+拉格朗日乘数法

热门文章

  1. 泰勒公式的收敛域的程序验证
  2. android作用是什么意思,安卓ART模式是什么意思 ART模式有什么作用及功能
  3. Mac OS X 背后的故事(一)力挽狂澜的Ellen Hancock
  4. Python知道cos值求角度_先后发布COS!腐团儿魔王正面PK,这艾达王不输李冰冰
  5. Wow 服务器解析(一)
  6. 未来实验A/B测的统计学原理
  7. 【附源码】计算机毕业设计SSM网络相册设计
  8. Win10只有飞行模式,没有无线模式(无线网卡异常)的解决方法
  9. 数据挖掘|关联规则Apriori算法详解及其在中医医案中的应用
  10. 正点原子-IMX6ULL学习