![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
哈希表
文章平均质量分 75
哈希表
哲学代码人
这个作者很懒,什么都没留下…
展开
-
力扣刷题 383.赎金信
唯一的区别在于这次仅需要ransomNote的所有字符能够在magazine找到,因此我们在最后record数组的判断中的要求是不存在大于0的元素,因为如果magazine中包含ransomNote中所有的元素,那么数组中的元素只会有两种情况,等于0或者小于0,等于0对应在两个字符串都有的元素,小于0对应在magazine中而不在ransomNote中的元素。误把 return true 放到了循环中,那么就会导致遍历一次就会返回true或 false。以下是笔者在写代码时犯下的错误。原创 2024-03-18 20:45:56 · 358 阅读 · 0 评论 -
力扣刷题 15.三数之和
思路是先对数组进行排序,再对数组进行遍历,遍历的每个元素即为第一个数,记为a,每遍历一个a,在它后面的元素区间的首尾设置两个指针,分别叫left和right,对应后两个数b和c。这样遍历完,我们就找所有符合条件的三元数组啦。最致命的问题是,这道题要求不可以包含重复的三元组,需要进行去重操作,而这个操作在写代码时有许多细节要注意,很难一次性写出完善的代码,如下是哈希法的完整代码。这道题乍一眼看和我们之前做过的1.两数之和挺相似的,所以也想到用哈希法来求解。注意,输出的顺序和三元组的顺序并不重要。原创 2024-03-21 12:03:45 · 379 阅读 · 1 评论 -
力扣刷题 349.两个数组的交集
给定两个数组nums1和nums2,返回它们的交集。输出结果中的每个元素一定是的。我们可以。[2][9,4][4,9] 也是可通过的。原创 2024-03-14 14:43:28 · 1047 阅读 · 2 评论 -
力扣刷题 1.两数之和
这道题题目如果用最直接的做法便是遍历数组中每一个元素,在每一次遍历到一个元素时,对其后面的元素也进行遍历,直到找出相加可以等于target值的两个元素。,但是这一次我们选用的数据结构有所不同,原因在于题干要求我们不仅要找到元素的值还要让我们返回元素所在数组的下标,这就意味着我们需要记住两个信息。因此,它不保证元素的顺序,并且元素的存储位置是根据键的哈希值决定的。总的来说,unordered_map是一种非常快速且高效的数据结构,适用于需要快速检索键值对的场景,但不需要元素有序的情况。,请你在该数组中找出。原创 2024-03-16 21:42:05 · 815 阅读 · 1 评论 -
力扣刷题 454.四数相加
为了实现把前两个数组遍历的信息传递给第二个整体,我们需要把相加的和和出现的次数储存到哈希表里,分别对应key和value。然后对第二个整体进行遍历,取不同的元素相加,判断0减和的值是否在哈希表中,若存在,则把该值对应的出现次数累加。为我们的改进解法提供了铺垫,暴力解法的思路就是用四个for循环去遍历四个数组,取不同的元素相加,如果等于0,就count++。综上所述,本题我们又一次用到了哈希法,这是因为我们需要记录前两个数组遍历的信息,信息为相加的和和出现的次数。,请你计算有多少个元组。原创 2024-03-17 22:43:47 · 435 阅读 · 1 评论 -
力扣刷题 202. 快乐数
因此,我们的思路是计算数 n 各位上的平方和,并判断是否为1,如果成立则 return true。如果不成立,判断该平方和是否在哈希表中,如果存在则说明陷入无限循环,return false,如果还没有重复,则将平方和放入哈希表,并更新数 n 的值继续计算平方和,进行到下一次循环。的作用是将变量n整除以10,并将结果重新赋值给n,实现了删除最后一位的功能,例如223/10=22,每一次循环中,相当于往高位移动一位,直到只剩最高位,这时n/10就等于0,结束循环。这个函数实现了计算数 n 每位平方和的功能。原创 2024-03-15 20:20:53 · 351 阅读 · 1 评论 -
力扣刷题 18.四数之和
这道题和15.三数之和的思路是几乎一样的,思路是两层for循环来寻找a和b,把nums[i] + nums[j]看作整体,依然是循环内有left和right下标作为双指针,找出nums[i] + nums[j] + nums[left] + nums[right] == target的情况,三数之和的时间复杂度是O(n^2),四数之和的时间复杂度是O(n^3). 但是这道题要注意的细节不少,主要集中在题干修改后的剪枝操作。与三数之和重复的细节我在这里不在罗列,详情请看三数之和这篇文章。原创 2024-03-22 21:28:16 · 259 阅读 · 1 评论 -
力扣刷题 242.有效的字母异位词
接着遍历s字符串,每遇到一个字符,就将字符对应的哈希表索引下标(数组下标)所在的元素指。因为字符a到字符z的ASCII是26个连续的数值,所以我们可以把字符映射到数组也就是哈希表的索引下标上。这样,字符a映射为下标0,相应的字符z映射为下标25。这样的好处是,在遍历字符串s的时候,用s[i] - ‘a’就可以确定字符对应在哈希表上的索引下标 ,并不需要记住字符a的ASCII,只要求出一个。接着遍历t 字符串,每遇到一个字符,就将字符对应的哈希表索引下标(数组下标)所在的元素指。是一个函数,用于获取字符串。原创 2024-03-14 15:36:06 · 386 阅读 · 0 评论