349两个数组的交集(遗留问题)
349两个数组的交集
题目要求:
给定两个数组 nums1
和 nums2
,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例 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两个数组的交集(遗留问题)相关推荐
- 349. 两个数组的交集 golang
349. 两个数组的交集 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2: 输入: num ...
- 两个对象数组交集_yiduobo的每日leetcode 349.两个数组的交集 amp;amp; 350.两个数组的交集II...
祖传的手艺不想丢了,所以按顺序写一个leetcode的题解.计划每日两题,争取不卡题吧 349.两个数组的交集https://leetcode-cn.com/problems/intersection ...
- Day 06 | 242.有效的字母异位词 349. 两个数组的交集 202.快乐数 1. 两数之和
这四道题之前都做过!比第一次顺利一些,不过还是得看题解,磕磕绊绊的.不过我相信坚持下去一定会越来越好滴! 242.有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 ...
- LeetCode -349 两个数组的交集
难度:简单 给定两个数组 nums1 和 nums2 ,返回它们的交集 .输出结果中的每个元素一定是唯一 的.我们可以不考虑输出结果的顺序 . 题目链接 LeetCode -349 两个数组的交集 S ...
- LeetCode 349 两个数组的交集
349. 两个数组的交集 难度简单476收藏分享切换为英文接收动态反馈 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] ...
- Leetcode刷题100天—349. 两个数组的交集(集合)—day08
前言: 作者:神的孩子在歌唱 大家好,我叫运智 349. 两个数组的交集 难度简单410收藏分享切换为英文接收动态反馈 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = ...
- LeetCode 349. 两个数组的交集【哈希表】
349. 两个数组的交集 给定两个数组 nums1 和 nums2 ,返回 它们的交集 .输出结果中的每个元素一定是 唯一 的.我们可以 不考虑输出结果的顺序 . 示例 1: 输入:nums1 = [ ...
- 算法训练Day6 | LeetCode:242. 有效的字母异位词(数组作哈希表);349. 两个数组的交集(Set作哈希表);202.快乐数 (Set作哈希表);1. 两数之和(Map作哈希表)
目录 LeetCode242. 有效的字母异位词 方法:数组作哈希表 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 Leetcode349. 两个数组的交集 方法一:用Set作HashMa ...
- 代码随想录算法训练营第六天|242. 有效的字母异位词,349. 两个数组的交集,202.快乐数,1. 两数之和
242. 有效的字母异位词 力扣题目链接 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = ...
最新文章
- 【深度学习】with torch.no_grad的作用
- 05-数据类型、常量、变量
- SAP ADBC和JDBC的对比
- JavaScript | 如何为变量分配十进制,八进制和十六进制值?
- Jquery鼠标点击出现文字
- jquery datepicker 点击日期控件不会自动更新input的值
- 为什么GEO2R/GEOquery的结果可能是错的?
- Java 基础数据结构介绍
- Spring集成PageHelper的简单用法
- 模态识别在计算机视觉应用,相关性学习在计算机视觉任务中的研究与应用
- 序号47指标横向展示.xlsx_电力监控系统安全防护规定Akey310参数指标
- 台湾ICPlus IP178G/GH/GI 8接口FE以太网交换机芯片详细介绍
- Java、JSP汽车租赁管理系统
- ffmpeg命令下载MP4视频)
- 微信公众号检测本地App, 安装则打开,未安装则下载的实现方式
- 面试官:2 年招到 18 个前端教你怎么招人
- 计算机未来发展报告,2020-2026年中国电子计算机行业发展深度调研与未来趋势报告...
- 用单片机C语言开发雨滴智能屏小程序
- 前端HTML------负责网页结构
- bzoj 2876: [Noi2012]骑行川藏 二分+拉格朗日乘数法