Hash Table 哈希表
哈希表,散列表
不吃糖葫芦
这个作者很懒,什么都没留下…
展开
-
哈希表
哈希表哈希表是一种使用哈希函数组织数据,以支持快速插入和搜索的数据结构。有两种不同类型的哈希表:哈希集合和哈希映射。哈希集合是集合数据结构的实现之一,用于存储非重复值。哈希映射是映射 数据结构的实现之一,用于存储(key, value)键值对。例题:LeetCode 705. 设计哈希集合(Java)LeetCode 706. 设计哈希映射(Java)哈希集哈希集是集合的实现之一...原创 2020-04-03 17:35:22 · 192 阅读 · 0 评论 -
LeetCode 380. 常数时间插入、删除和获取随机元素(Java)
380. 常数时间插入、删除和获取随机元素设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中移除该项。getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。示例 :// 初始化一个空的集合。RandomizedSet r...原创 2020-04-03 17:34:55 · 191 阅读 · 0 评论 -
LeetCode 前 K 个高频元素(Java)
前 K 个高频元素给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是...原创 2020-04-03 17:30:02 · 181 阅读 · 0 评论 -
LeetCode 692. 前K个高频单词(Java)
692. 前K个高频单词给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: “i” 和 “love” 为出现次数最多的两个单词,...原创 2020-04-03 17:20:05 · 258 阅读 · 0 评论 -
LeetCode 454. 四数相加 II(Java)
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 。例如:输入...原创 2020-04-03 15:04:43 · 151 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串(Java)
无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-chara...原创 2020-04-02 22:36:49 · 147 阅读 · 0 评论 -
LeetCode 652. 寻找重复的子树(Java)
652. 寻找重复的子树给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。示例 1: 1 / &nb...原创 2020-04-02 21:54:28 · 208 阅读 · 0 评论 -
LeetCode 36. 有效的数独(Java)
36. 有效的数独判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[[“5”,“3”,".",".",“7”,".",".",".","."...原创 2020-04-02 21:07:24 · 146 阅读 · 0 评论 -
LeetCode 49. 字母异位词分组(Java)
49. 字母异位词分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。来源:力扣(LeetCo...原创 2020-04-02 20:11:11 · 202 阅读 · 0 评论 -
LeetCode 219. 存在重复元素 II(Java)
219. 存在重复元素 II给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cont...原创 2020-04-02 18:00:07 · 107 阅读 · 0 评论 -
LeetCode 350. 两个数组的交集 II(Java)
350. 两个数组的交集 II难度简单253收藏分享切换为英文关注反馈给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。来源:力扣(LeetCode)链接:https://lee...原创 2020-04-02 17:46:15 · 132 阅读 · 0 评论 -
LeetCode 387. 字符串中的第一个唯一字符(Java)
387. 字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = “leetcode”返回 0.注意事项:您可以假定该字符串只包含小写字母。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string著作权...原创 2020-04-02 16:38:51 · 127 阅读 · 0 评论 -
LeetCode 599. 两个列表的最小索引总和(Java)
599. 两个列表的最小索引总和假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。示例 1:输入:[“Shogun”, “Tapioca Express”, “Burger King”, “KF...原创 2020-04-02 16:08:56 · 160 阅读 · 0 评论 -
LeetCode 205. 同构字符串(Java)
205. 同构字符串给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = “egg”, t = “add”输出: true来源:力扣(LeetCode)链接:https://leet...原创 2020-04-02 14:47:12 · 103 阅读 · 0 评论 -
LeetCode 202. 快乐数(Java)
202. 快乐数编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02...原创 2020-04-01 21:05:31 · 96 阅读 · 0 评论 -
LeetCode 349. 两个数组的交集(Java)
349. 两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intersection-of-two-arr...原创 2020-04-01 20:48:44 · 156 阅读 · 0 评论 -
LeetCode 136. 只出现一次的数字(Java)
136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:利用Hash...原创 2020-04-01 20:22:14 · 99 阅读 · 0 评论 -
LeetCode 217. 存在重复元素(Java)
217. 存在重复元素难度简单233收藏分享切换为英文关注反馈给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contains-duplic...原创 2020-04-01 18:00:35 · 115 阅读 · 0 评论 -
LeetCode 706. 设计哈希映射(Java)
706. 设计哈希映射不使用任何内建的哈希表库设计一个哈希映射具体地说,你的设计应该包含以下的功能put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。remove(key):如果映射中存在这个键,删除这个数值对。示例:MyHashMap hashMap = ...原创 2020-04-01 17:50:34 · 126 阅读 · 0 评论 -
LeetCode 705. 设计哈希集合(Java)
705. 设计哈希集合不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值。contains(value) :返回哈希集合中是否存在这个值。remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。示例:MyHashSet hashSet = new MyHashSet();has...原创 2020-04-01 17:45:54 · 130 阅读 · 0 评论 -
Hash Table 哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。LeetCode1 两数之和LeetCode 560. 和为K的子数组LeetCode 771. 宝石与石头LeetCode 1365. 有多少小于当前数字的数字...原创 2020-03-15 18:07:13 · 88 阅读 · 0 评论 -
LeetCode 560. 和为K的子数组(Java)
和为K的子数组给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。来源:力扣(Leet...原创 2020-03-15 10:47:36 · 151 阅读 · 0 评论 -
LeetCode 1. 两数之和 (Java)
两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力...原创 2020-03-05 16:21:29 · 90 阅读 · 0 评论 -
LeetCode 771. 宝石与石头 (Java)
宝石与石头给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3来源:力扣(LeetCode)链接:https...原创 2020-03-05 12:09:04 · 123 阅读 · 0 评论 -
LeetCode 1365. 有多少小于当前数字的数字 (Java)
有多少小于当前数字的数字给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/h...原创 2020-03-05 11:09:24 · 487 阅读 · 0 评论