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. 1081 Rational Sum 有理数类型题处理 需再做
  2. 语音识别|基于CNN+DFSMN(简化版:标量+无步长因子)的声学模型实现及代码开源(keras)
  3. ue4导入倾斜摄影_倾斜摄影建模干货|还怕搞不定CC空三?这里只要5分钟……
  4. 活动目录管理中常用的脚本(一)
  5. winform button设计(一)
  6. Openjudge-计算概论(A)-字符串排序
  7. 远程win10系统桌面时提示凭证不工作问题的终极解决办法
  8. [Hadoop]Sqoop 1.4.2中文文档(二)之数据导出
  9. 视频教程-三课时精通matlab拉普拉斯变换和逆变换-Matlab
  10. ip地址服务器怎么修改,怎么修改电脑的IP地址和DNS服务器
  11. 统计学(贾俊平《第七版》)知识总结
  12. 城市规划图例符号_城市规划图例符号
  13. 区块链技术在银行业的应用
  14. 20210928 | Python案例:构建税费计算函数
  15. 【硬见小百科】开关电源电路组成及各部分详解
  16. 航天晨光:永中DCS与原有OA系统整合,文件阅览效率大幅提升!
  17. ActiveMQ消息处理机制-Topic方式(二)
  18. 如何给WORD文档添加外边框,教程在这里,WORD页面外边框怎么添加
  19. Python 第三方模块 数据分析 Pandas模块 字符串处理
  20. java实现分数相加减

热门文章

  1. 滴滴云微信小程序部署指导
  2. 数据库—MySql—Redis—MongoDB—Http协同流程
  3. 2015年考研英语复习23问23答
  4. Code128一维码(解码)
  5. 用计算机能开通余利宝吗,余利宝是什么怎么开通 余利宝开通使用方法教程详解...
  6. matplotlib绘制等比横纵坐标
  7. JavaScript 练手小技巧:animationend 事件及其应用小案例
  8. 【Labplus 3】掌控板-无线广播口令匹配
  9. 入选百佳应用,智慧中台看″浙″里!
  10. macbook删除的照片怎么恢复