![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
哈希
文章平均质量分 56
SNAKEpc12138
这个作者很懒,什么都没留下…
展开
-
哈希第九天
leetcode第18题. 四数之和题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。「注意:」答案中不可以包含重复的四元组。思路四数之和,和三数之和是一个思路,都是使用双指针法, 基本解法就是在三数之和 的基础上再套一层for循环,多一个需要去重的变量。但是有一些细节需要注意,例如:不要判断nums[k] >转载 2021-04-14 17:08:06 · 70 阅读 · 0 评论 -
哈希第八天
leetcode第15题. 三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。思路哈希解法两层for循环就可以确定 a 和b 的数值了,可以使用哈希法来确定 0-(a+b) 是否在 数组里出现过,其实这个思路是正确的,但是我们有一个非常棘手的问题,就是题目中说的不可以包含重复的三元组。把符合条件的三元组放进vector中,然后在去去重,这转载 2021-04-13 15:20:01 · 65 阅读 · 0 评论 -
哈希第七天
leetcode第383题. 赎金信给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)思路和前面做过的242.有效的字母异或词相似,区别在于242.有效的字母异位词相当于求 字符串a 和 字转载 2021-04-12 14:39:13 · 99 阅读 · 0 评论 -
哈希第六天
leetcode第454题.四数相加II给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果不会超过 2^31 - 1 。思路对比昨天的【两数之和】,该题给定4个数组(昨天给定一个数组),找到A[i] + B[j] +转载 2021-04-11 11:23:35 · 70 阅读 · 0 评论 -
哈希第五天
leetcode第1题. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路很明显暴力的解法是两层for循环查找,时间复杂度是O(n^2)。使用哈希法最为合适,之前已经介绍转载 2021-04-10 14:16:41 · 77 阅读 · 0 评论 -
哈希第四天
leetcode第202题. 快乐数编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1如果 可以变为 1,那么这个数就是快乐数如果 n 是快乐数就返回 True ;不是,则返回 False 。思路题目中说了会 无限循环,那么也就是说求和的过程中,sum会重复出现,这对解题很重要!当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈转载 2021-04-09 16:50:26 · 118 阅读 · 0 评论 -
哈希第三天
leetcode第349题. 两个数组的交集题意:给定两个数组,编写一个函数来计算它们的交集。思路注意说明中给出:输出结果中的每个元素一定是唯一的。说明也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序。可以发现,貌似用数组做哈希表可以解决这道题目(像昨天那样),把nums1的元素,映射到哈希数组的下标上,然后在遍历nums2的时候,判断是否出现过就可以了。但是要注意,使用数组来做哈希的题目,都限制了数值的大小。昨天的题目中只有小写字母,或者数值大小在[0- 10000] 之内等等。而转载 2021-04-08 16:22:34 · 95 阅读 · 0 评论 -
哈希第二天
leetcode第242题. 有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。思路暴力解法:两层for 循环,同时还要记录字符是否重复出现,很明显时间复杂度是 O(n^2)。哈希法:数组其实就是一个简单哈希表,而且这道题目中字符串只有小写字符,那么就可以定义一个数组,来记录字符串s里字符出现的次数。需要定义一个多大的数组呢,定一个数组叫做record,大小为26 就可以了,初始化为0,因为字符a到字符z的ASCII也是26个连续的数值。为了方便举转载 2021-04-07 16:43:04 · 63 阅读 · 0 评论 -
哈希第一天
懒得搬了,直接上链接吧关于哈希表,你该了解这些!那么哈希表能解决什么问题呢,「一般哈希表都是用来快速判断一个元素是否出现集合里。」转载 2021-04-07 16:06:56 · 61 阅读 · 0 评论