
hash表
hestyle
戎码一生!
展开
-
LeetCode 在线选举(hash表+二分搜索)
在选举中,第 i 张票是在时间为 times[i] 时投给 persons[i] 的。现在,我们想要实现下面的查询函数: TopVotedCandidate.q(int t) 将返回在 t 时刻主导选举的候选人的编号。在 t 时刻投出的选票也将被计入我们的查询之中。在平局的情况下,最近获得投票的候选人将会获胜。示例:输入:["TopVotedCandidate","q","q","q","...原创 2019-06-30 11:52:53 · 381 阅读 · 0 评论 -
LeetCode 宝石与石头(hash表)
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z", S = "ZZ"输出:...原创 2019-05-08 22:30:36 · 252 阅读 · 0 评论 -
LeetCode 原子的数量(递归+hash表)
给定一个化学式formula(作为字符串),返回每种原子的数量。原子总是以一个大写字母开始,接着跟随0个或任意个小写字母,表示原子的名字。如果数量大于 1,原子后会跟着数字表示原子的数量。如果数量等于 1 则不会跟数字。例如,H2O 和 H2O2 是可行的,但 H1O2 这个表达是不可行的。两个化学式连在一起是新的化学式。例如 H2O2He3Mg4 也是化学式。一个括号中的化学式和数字(可...原创 2019-04-28 19:47:57 · 1447 阅读 · 0 评论 -
LeetCode 账户合并(深度优先搜索)
给定一个列表 accounts,每个元素 accounts[i] 是一个字符串列表,其中第一个元素 accounts[i][0] 是 名称 (name),其余元素是 emails 表示该帐户的邮箱地址。现在,我们想合并这些帐户。如果两个帐户都有一些共同的邮件地址,则两个帐户必定属于同一个人。请注意,即使两个帐户具有相同的名称,它们也可能属于不同的人,因为人们可能具有相同的名称。一个人最初可以拥有...原创 2019-04-28 15:29:40 · 1343 阅读 · 1 评论 -
LeetCode 删除与获得点数(动态规划+hash表)
给定一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入: nums = [3, 4, 2]输出: 6解释: 删除 4 来获得 4 个点数,因此 ...原创 2019-05-02 15:42:03 · 385 阅读 · 0 评论 -
LeetCode 员工重要性(深度优先搜索、广度优先搜索)
给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体现在员工1的数据结构中。...原创 2019-04-23 15:16:58 · 550 阅读 · 0 评论 -
LeetCode 分割数组为连续子序列(贪心策略、hash表)
输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数。返回你是否能做出这样的分割?示例 1:输入: [1,2,3,3,4,5]输出: True解释:你可以分割出这样两个连续子序列 : 1, 2, 33, 4, 5示例 2:输入: [1,2,3,3,4,4,5,5]输出: True解释:你可以分割出这样两个连续子...原创 2019-04-18 14:51:08 · 2237 阅读 · 0 评论 -
LeetCode Lisp语法解析(细节处理)
给定一个类似 Lisp 语句的表达式 expression,求出其计算结果。表达式语法如下所示:表达式可以为整数,let 语法,add 语法,mult 语法。表达式的结果总是一个整数。(整数可以是正整数、负整数、0)let 语法表示为 (let v1 e1 v2 e2 … vn en expr), 其中 let语法总是以字符串"let"来表示,接下来会跟随一个或多个交替变量或表达式,也就...原创 2019-05-01 17:54:39 · 1182 阅读 · 0 评论 -
LeetCode 两数之和IV(hash表、双指针)
给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6 / \ \2 4 7Target = 9输出: True案例 2:输入: 5 / \ 3 6 / \ \2 4 7Target = 28输出: False...原创 2019-04-18 09:54:09 · 323 阅读 · 0 评论 -
LeetCode 寻找重复的子树(序列化+hash表)
给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。示例 1: 1 / \ 2 3 / / \ 4 2 4 / 4下面是两个重复的子树: 2 / 4和 4因...原创 2019-04-18 09:17:58 · 590 阅读 · 0 评论 -
LeetCode 子域名访问计数(hash表)
一个网站域名,如"discuss.leetcode.com",包含了多个子域名。作为顶级域名,常用的有"com",下一级则有"leetcode.com",最低的一级为"discuss.leetcode.com"。当我们访问域名"discuss.leetcode.com"时,也同时访问了其父域名"leetcode.com"以及顶级域名 “com”。给定一个带访问次数和域名的组合,要求分别计算每个域...原创 2019-05-19 09:23:45 · 375 阅读 · 0 评论 -
LeetCode 最常见的单词(hash表)
给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。示例:输入: paragraph = "Bob hit a ball, the hit BALL flew far after it...原创 2019-05-20 21:16:52 · 817 阅读 · 0 评论 -
LeetCode 卡牌分组(hash表)
给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:[1,1,1...原创 2019-06-26 21:36:36 · 445 阅读 · 0 评论 -
LeetCode 最大频率栈(hash表+stack、优先队列)
实现 FreqStack,模拟类似栈的数据结构的操作的一个类。FreqStack 有两个函数:push(int x),将整数 x 推入栈中。pop(),它移除并返回栈中出现最频繁的元素。如果最频繁的元素不只一个,则移除并返回最接近栈顶的元素。示例:输入:["FreqStack","push","push","push","push","push","push","pop","pop...原创 2019-06-16 15:07:55 · 917 阅读 · 0 评论 -
LeetCode 最长的斐波拉契子序列的长度(hash表+动态规划)
如果序列 X_1, X_2, …, X_n 满足下列条件,就说它是 斐波那契式 的:n >= 3对于所有 i + 2 <= n,都有 X_i + X_{i+1} = X_{i+2}给定一个严格递增的正整数数组形成序列,找到 A 中最长的斐波那契式的子序列的长度。如果一个不存在,返回 0 。(回想一下,子序列是从原序列 A 中派生出来的,它从 A 中删掉任意数量的元素(也可以不...原创 2019-06-10 18:24:41 · 596 阅读 · 0 评论 -
LeetCode 查找与替换模式(hash映射)
你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配。如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们就得到了所需的单词,那么单词与模式是匹配的。(回想一下,字母的排列是从字母到字母的双射:每个字母映射到另一个字母,没有两个字母映射到同一个字母。)返回 words 中与给定模式匹配的单词列表。你可以按任何...原创 2019-06-15 11:13:52 · 262 阅读 · 0 评论 -
LeetCode 公平的糖果交换(二分法、hash表)
爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 块糖的大小,B[j] 是鲍勃拥有的第 j 块糖的大小。因为他们是朋友,所以他们想交换一个糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。如果有多个答案,...原创 2019-06-14 20:59:30 · 298 阅读 · 0 评论 -
LeetCode 两句话中的不常见单词(hash表)
给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。返回所有不常用单词的列表。您可以按任何顺序返回列表。示例 1:输入:A = "this apple is sweet", B = "this apple is sour"输出:["sweet","sour"]...原创 2019-06-14 10:08:50 · 199 阅读 · 0 评论 -
LeetCode 细分图中的可到达结点(图)
从具有 0 到 N-1 的结点的无向图(“原始图”)开始,对一些边进行细分。该图给出如下:edges[k] 是整数对 (i, j, n) 组成的列表,使 (i, j) 是原始图的边。n 是该边上新结点的总数然后,将边 (i, j) 从原始图中删除,将 n 个新结点 (x_1, x_2, …, x_n) 添加到原始图中,将 n+1 条新边 (i, x_1), (x_1, x_2), (x_2...原创 2019-06-13 20:44:27 · 582 阅读 · 0 评论 -
LeetCode 一手顺子(hash表)
爱丽丝有一手(hand)由整数数组给定的牌。现在她想把牌重新排列成组,使得每个组的大小都是 W,且由 W 张连续的牌组成。如果她可以完成分组就返回 true,否则返回 false。示例 1:输入:hand = [1,2,3,6,2,3,4,7,8], W = 3输出:true解释:爱丽丝的手牌可以被重新排列为 [1,2,3],[2,3,4],[6,7,8]。示例 2:输入:han...原创 2019-06-01 11:39:40 · 313 阅读 · 0 评论 -
LeetCode 森林中的兔子(hash表)
森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。返回森林中兔子的最少数量。示例:输入: answers = [1, 1, 2]输出: 5解释:两只回答了 "1" 的兔子可能有相同的颜色,设为红色。之后回答了 "2" 的兔子不会是红色,否则他们的回答会相互矛盾。设回答了 "2" 的兔子为蓝色。...原创 2019-05-10 20:36:37 · 513 阅读 · 0 评论 -
LeetCode 两个列表的最小索引总和(hash表)
假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。示例 1:输入:["Shogun", "Tapioca Express", "Burger King", "KFC"]["Piatti", "T...原创 2019-04-15 14:44:57 · 358 阅读 · 0 评论 -
LeetCode 黑名单中随机数(图解)
给定一个包含 [0,n ) 中独特的整数的黑名单 B,写一个函数从 [ 0,n ) 中返回一个不在 B 中的随机整数。对它进行优化使其尽量少调用系统方法 Math.random() 。提示:1 <= N <= 10000000000 <= B.length < min(100000, N)[0, N) 不包含 N,详细参见 interval notation 。...原创 2019-04-26 20:21:49 · 924 阅读 · 0 评论 -
LeetCode 无重复字符的最长子串(双指针)
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke...原创 2019-04-09 09:02:38 · 552 阅读 · 0 评论 -
LeetCode 两数之和(hash表)
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路分析: 最简单粗...原创 2019-04-08 22:32:36 · 713 阅读 · 1 评论 -
LeetCode 连续数组(hash表)
给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。注意: 给定的二进制数组的长度不会超过50000。思路分析: 将0转换为...原创 2019-04-08 15:41:02 · 353 阅读 · 0 评论 -
LeetCode 最长特殊序列II
给定字符串列表,你需要从它们中找出最长的特殊序列。最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。子序列可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。输入将是一个字符串列表,输出是最长特殊序列的长度。如果最长特殊序列不存在,返回 -1 。示例:输入: "aba", "cdc",...原创 2019-04-07 20:27:43 · 817 阅读 · 3 评论 -
LeetCode 随机翻转矩阵
题中给出一个 n 行 n 列的二维矩阵 (n_rows,n_cols),且所有值被初始化为 0。要求编写一个 flip 函数,均匀随机的将矩阵中的 0 变为 1,并返回该值的位置下标 [row_id,col_id];同样编写一个 reset 函数,将所有的值都重新置为 0。尽量最少调用随机函数 Math.random(),并且优化时间和空间复杂度。注意:1.1 <= n_rows, n_...原创 2019-04-07 14:15:12 · 594 阅读 · 0 评论 -
LeetCode 出现次数最多的子树元素和(hash表)
给出二叉树的根,找出出现次数最多的子树元素和。一个结点的子树元素和定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。然后求出出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的元素(不限顺序)。示例 1输入: 5 / \2 -3返回 [2, -3, 4],所有的值均只出现一次,以任意顺序返回所有值。示例 2输入: 5 / \...原创 2019-04-06 14:37:19 · 411 阅读 · 0 评论 -
LeetCode 二叉搜索树中的众数(hash表)
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2 / 2返回[2].提示:如果众数超过1个,不需考虑...原创 2019-04-05 21:19:49 · 744 阅读 · 0 评论 -
LeetCode 键盘行(hash表)
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。示例:输入: ["Hello", "Alaska", "Dad", "Peace"]输出: ["Alaska", "Dad"]注意:你可以重复使用键盘上同一字符。你可以假设输入的字符串将只包含字母。思路分析: 使用hash表将各个字符与其出现的行数关联,然后判断字符串的所有字符是否都在同一行。c...原创 2019-04-05 19:29:44 · 338 阅读 · 0 评论 -
LeetCode 下一个更大元素I(hash表、栈)
给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输...原创 2019-04-05 17:00:23 · 256 阅读 · 0 评论 -
LeetCode 在系统中查找重复文件(hash表)
给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径。一组重复的文件至少包括二个具有完全相同内容的文件。输入列表中的单个目录信息字符串的格式如下:“root/d1/d2/…/dm f1.txt(f1_content) f2.txt(f2_content) … fn.txt(fn_content)”这意味着有 n 个文件(f1.txt...原创 2019-04-15 18:54:53 · 895 阅读 · 0 评论 -
LeetCode 数组中的K-diff数对(hash表)
给定一个整数数组和一个整数 k, 你需要在数组里找到不同的 k-diff 数对。这里将 k-diff 数对定义为一个整数对 (i, j), 其中 i 和 j 都是数组中的数字,且两数之差的绝对值是 k.示例 1:输入: [3, 1, 4, 1, 5], k = 2输出: 2解释: 数组中有两个 2-diff 数对, (1, 3) 和 (3, 5)。尽管数组中有两个1,但我们只应返回不同的...原创 2019-04-09 11:06:05 · 371 阅读 · 0 评论 -
LeetCode 最长和谐子序列(hash表)
和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。示例 1:输入: [1,3,2,2,5,2,3,7]输出: 5原因: 最长的和谐数组是:[3,2,2,2,3].说明: 输入的数组长度最大不超过20,000.思路分析: 使用hash表记录各个数字出现的次数,然后扫描hash表,寻找num与nu...原创 2019-04-14 21:40:41 · 282 阅读 · 0 评论 -
LeetCode 设计哈希映射
不使用任何内建的哈希表库设计一个哈希映射具体地说,你的设计应该包含以下的功能put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。remove(key):如果映射中存在这个键,删除这个数值对。示例:MyHashMap hashMap = new MyHashM...原创 2019-04-26 14:31:51 · 618 阅读 · 0 评论 -
LeetCode 错误的集合(hash表、负数标记法)
集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入: nums = [1,2,2,4]输出: [2,3]注意:给定数组的长度范...原创 2019-04-17 14:28:07 · 635 阅读 · 0 评论 -
LeetCode 标签验证器(辅助stack)
给定一个表示代码片段的字符串,你需要实现一个验证器来解析这段代码,并返回它是否合法。合法的代码片段需要遵守以下的所有规则:代码必须被合法的闭合标签包围。否则,代码是无效的。闭合标签(不一定合法)要严格符合格式:<TAG_NAME>TAG_CONTENT</TAG_NAME>。其中,<TAG_NAME>是起始标签,</TAG_NAME>是结束标签...原创 2019-04-14 17:22:47 · 557 阅读 · 0 评论 -
LeetCode 分糖果(hash表、set容器)
给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例 1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的糖果,每一种都有两个。 最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数最多。...原创 2019-04-13 14:53:31 · 296 阅读 · 0 评论 -
LeetCode 字符串的排列(滑动窗口)
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").示例2:输入: s1= "ab" s2 = "eidboaoo"输出: False注意:输入的字符串只包含小...原创 2019-04-13 13:00:38 · 1154 阅读 · 0 评论