leetcode哈希表系列
leetcode哈希表系列
谜底666
我迷恋的时光自天空倾倒
展开
-
41 缺失的第一个整数
比如有[3,4,5,-1,1,255],nums[0] = 3 和nums[0]-1 = 2为下标的值(即nums[2] = 5)进行交换,遍历完成后就保证了:i+1位置存的就是nuns[i]的数,比如nums[0] = 1。首先遍历数组,要做的就是数组的每个位置中,存的是每个位置对应的数,不满足的就在对应的位置进行交换.给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。这道题正常的写法是用哈希,但是这道题要求原地,那就使用一种原地哈希的思路.输入:nums = [1,2,0]原创 2024-07-02 21:00:35 · 264 阅读 · 0 评论 -
49 字母异位词分组
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。原创 2024-06-28 08:40:15 · 233 阅读 · 0 评论 -
128 最长连续序列
这道题和之前的题目在理解上不同的是,这个求的是连续序列,不是子序列,而且根据示例,相当于排序后求子数组的长度。给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。这道题用的主要的思路是哈希表,简单来说就是每个数都判断一次这个数是不是连续序列的开头那个数。因此只需要对每个开头的数进行循环,直到这个序列不再连续,因此复杂度是O(n)。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [100,4,200,1,3,2]原创 2024-06-25 08:21:48 · 182 阅读 · 0 评论 -
leetcode560 和为k的子数组-前缀和
需要再加上哈希表来存一下重复的数据。首先讲一下前缀和的概念,是指通过前缀和数组来保存前n位的和,如presum[1]代表的是nums数组中前1位的和,即。首先要是没思路的话,就用暴力法试试,虽然是一个一维数组,但暴力法还是要循环两次来进行处理,找到符合预期的数据。给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数。输入:nums = [1,1,1], k = 2。原创 2023-07-05 23:36:42 · 147 阅读 · 0 评论 -
leetcode 146 LRU缓存
这道题在面试中被问到的概率较大,因为既考察了链表,又考察了哈希表,又有一定的综合能力,比较容易扩展。在本题中,实现LRU缓存是用哈希表+双向链表来实现。注意双向链表一般会加上头尾的伪结点来方便定位。请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。原创 2023-04-08 14:21:07 · 87 阅读 · 0 评论 -
leetcode哈希表系列汇总
这个系列,主要就是利用go中的map来解。原创 2023-02-05 01:15:03 · 286 阅读 · 0 评论 -
leetcode 383赎金信
这道题明显还是用map可以解,与前面的题目有一点不同的就是只能用一次,那么在第二次遍历的时候,需要判断一下是否存在map中的value的次数小于0,是的话则不满足一次的要求。给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。输入:ransomNote = “aa”, magazine = “aab”输入:ransomNote = “aa”, magazine = “ab”如果可以,返回 true;否则返回 false。原创 2022-10-05 14:01:37 · 136 阅读 · 0 评论 -
leetcode 454四数相加II
这道题是是四个独立的数组,还是用哈希表来解决;按照两数之和的思路,还是是map的key是值(对两个数组遍历的和),value是出现的次数,每次++输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]原创 2022-10-05 13:51:22 · 86 阅读 · 0 评论 -
leetcode 1 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。这道题比较明显的是用map,两值相加为target,注意下面的代码中,设计成了map的key为数组的值,而value为数组的index。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]输入:nums = [2,7,11,15], target = 9。原创 2022-10-05 10:55:11 · 96 阅读 · 0 评论 -
leetcode202 快乐数easy
其实感觉这道题也不太easy。。。编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true ;不是,则返回 false 。输入:n = 19输出:true这道题中,题目解释了大致有如下几种:......原创 2022-07-08 09:57:04 · 261 阅读 · 0 评论 -
leetcode349 两个数组的交集easy
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]妥妥的用map,把两个数组的值存到两个map中,然后遍历短的这个map,判断如果再长的中,就放到结果数组里。...原创 2022-07-08 09:12:11 · 315 阅读 · 0 评论 -
leetcode242 有效的字母异位词 easy
背景知识: 哈希表一般用来快速判断一个元素是否在集合里,因为枚举是O(n),而哈希表是O(1);优点是快,缺点是牺牲空间换取时间(要使用额外的数组,set或者是map来存放数据,才能实现快速的查找)。题目:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。示例:输入: s = "anagram", t = "nagaram"输出: true输入: s = "rat", t = "car"输出: fals...原创 2022-04-08 09:29:07 · 251 阅读 · 0 评论