leetcode刷题/哈希表篇
文章平均质量分 65
公仔面i
这个作者很懒,什么都没留下…
展开
-
leetcode哈希表篇总结
哈希表总结前言哈希表类型第一种:数组第二种:set容器第三种:map容器总结:小tip:前言哈希表的目的就是为了寻找元素的时间缩减为O(1).大大缩减查找的时间,对于某些题目是特别有效的. 可以作为哈希表的结构有三种:分别为数组,set容器,map容器.他们的选择是至关重要的.后面会介绍什么情况下选择什么哪一种容器.哈希表类型第一种:数组数组最为哈希表是最省空间的,它作为容器有一个很特别的地方就是它的大小,数组我们用静态数组,没办法重新定义它的大小,所以不适合那些题目的长度不确定或者是长度过原创 2021-07-17 23:40:49 · 278 阅读 · 1 评论 -
leetcode刷题/哈希表 18. 四数之和
18. 四数之和题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例 1:输入:nums = [1,0,-1,0,-2,2], target = 0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例 2:输入:nums = [], targe原创 2021-07-17 20:31:29 · 130 阅读 · 0 评论 -
leetcode刷题/哈希表 15. 三数之和
15. 三数之和题意:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]解题思路:定一移二去重定一:遍历整个数组,指原创 2021-07-17 18:29:27 · 141 阅读 · 1 评论 -
leetcode刷题/哈希表 454. 四数相加 II
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 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。例如:输入:A = [ 1, 2]B = [-2,-1]C = [-1, 2]D = [ 0, 2]原创 2021-07-17 08:49:21 · 150 阅读 · 0 评论 -
leetcode刷题/哈希表 1. 两数之和
1. 两数之和题意:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案.示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2原创 2021-07-17 07:18:31 · 223 阅读 · 0 评论 -
leetcode刷题/哈希表 202. 快乐数
202. 快乐数题意:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返回 false 。示例 1:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1原创 2021-07-16 22:54:55 · 167 阅读 · 5 评论 -
leetcode刷题/哈希表 349. 两个数组的交集
349. 两个数组的交集题意:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]解题思路:具体步骤:先用unordered_set存第一个数组再用set存第二个(可以让数字不重复)找到数字然后压入数组即可利用set容器实现没能重复的特点,可以减去删除重复元素的操作,用这个思路我做原创 2021-07-16 22:15:01 · 146 阅读 · 0 评论 -
leetcode刷题/哈希表 1002. 查找常用字符
1002. 查找常用字符 题意:给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:["bella","label","roller"]输出:["e","l","l"]示例 2:输入:["cool","lock","cook"]输出:["c","o"]第一种解题思路:第一种解法:原创 2021-07-16 17:51:19 · 147 阅读 · 0 评论 -
leetcode刷题/哈希表 438. 找到字符串中所有字母异位词
438. 找到字符串中所有字母异位词题意:给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指字母相同,但排列不同的字符串。示例 1:输入: s = "cbaebabacd", p = "abc"输出: [0,6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。示例 2:输入: s = "abab", p =原创 2021-07-16 06:42:00 · 253 阅读 · 0 评论 -
leetcode刷题/哈希表 49.字母异位词分组
49. 字母异位词分组 - 力扣(LeetCode) (leetcode-cn.com)题意:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]解题思路:这道题我是看了官方解答才知道用排序和哈希表做的,自己没想出来,一直在想着怎么跟首个去比原创 2021-07-15 16:02:04 · 163 阅读 · 0 评论 -
leetcode刷题/哈希表 383. 赎金信
383. 赎金信题意:给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)示例 1:输入:ransomNote = "a", magazine = "b"输出:false示例 2:输原创 2021-07-14 12:05:41 · 152 阅读 · 0 评论 -
leetcode刷题/哈希表 242. 有效的字母异位词
[242. 有效的字母异位词](https://leetcode-cn.com/problems/valid-anagram/submissions/)题意:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false解题思路:运用哈希表,因为小写字母的个数只有26个,所以可以用数组当做哈希表。原创 2021-07-14 11:57:49 · 151 阅读 · 0 评论