![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
哈希
跟哈希相关的算法
花飞雨追
梦想不是浮躁,而是沉淀和积累。
展开
-
Leetcode 884 两句话中不常见单词
题目句子 是一串由空格分隔的单词。每个 单词 仅由小写字母组成。如果某个单词在其中一个句子中恰好出现一次,在另一个句子中却 没有出现 ,那么这个单词就是 不常见的 。给你两个 句子 s1 和 s2 ,返回所有 不常用单词 的列表。返回列表中单词可以按 任意顺序 组织。解题思路 HashMap解决之。代码class Solution { public String[] uncommonFromSentences(String s1, String s2) { List&原创 2022-01-31 00:35:26 · 5798 阅读 · 0 评论 -
Leetcode 2034 股票价格波动
给你一支股票价格的数据流。数据流中每一条记录包含一个 时间戳 和该时间点股票对应的 价格 。不巧的是,由于股票市场内在的波动性,股票价格记录可能不是按时间顺序到来的。某些情况下,有的记录可能是错的。如果两个有相同时间戳的记录出现在数据流中,前一条记录视为错误记录,后出现的记录 更正 前一条错误的记录。请你设计一个算法,实现:更新 股票在某一时间戳的股票价格,如果有之前同一时间戳的价格,这一操作将 更正 之前的错误价格。找到当前记录里 最新股票价格 。最新股票价格 定义为时间戳最晚的股票价格。找到当原创 2022-01-23 12:31:55 · 98 阅读 · 0 评论 -
Leetcode 1345 跳跃游戏 IV
题目给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0)。每一步,你可以从下标 i 跳到下标:i + 1 满足:i + 1 < arr.lengthi - 1 满足:i - 1 >= 0j 满足:arr[i] == arr[j] 且 i != j请你返回到达数组最后一个元素的下标处所需的 最少操作次数 。注意:任何时候你都不能跳到数组外面。解题思路原创 2022-01-21 19:28:49 · 2295 阅读 · 0 评论 -
Leetcode 219 存在重复元素 II
题目给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j]且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。解题思路 维护一个 map ,遍历数组,每次将 nums[i] 对应的值更新为其下标 i ,如果存在重复元素,即键之前已存在,且之前的键对应的值与当前下标绝对值不大于 k 则返回 true 。代码class S原创 2022-01-19 20:30:23 · 614 阅读 · 0 评论 -
Leetcode 1629 按键持续时间最长的键
题目LeetCode 设计了一款新式键盘,正在测试其可用性。测试人员将会点击一系列键(总计 n 个),每次一个。给你一个长度为 n 的字符串 keysPressed ,其中 keysPressed[i] 表示测试序列中第 i 个被按下的键。releaseTimes 是一个升序排列的列表,其中 releaseTimes[i] 表示松开第 i 个键的时间。字符串和数组的 下标都从 0 开始 。第 0 个键在时间为 0 时被按下,接下来每个键都 恰好 在前一个键松开时被按下。测试人员想要找出按键 持续时间最原创 2022-01-09 00:13:39 · 92 阅读 · 0 评论 -
Leetcode 846 一手顺子
题目Alice 手中有一把牌,她想要重新排列这些牌,分成若干组,使每一组的牌数都是 groupSize ,并且由 groupSize 张连续的牌组成。给你一个整数数组 hand 其中 hand[i] 是写在第 i 张牌,和一个整数 groupSize 。如果她可能重新排列这些牌,返回 true ;否则,返回 false解题思路 模拟。将每个牌出现的次数用哈希计数,再从小到大枚举顺子的起始牌,按照 groupSize 的长度依次更新牌数,如果出现牌数不够的情况则返回 false 。 TreeMap原创 2021-12-30 11:51:28 · 271 阅读 · 0 评论 -
Leetcode 1995 统计特殊四元组
题目给你一个 下标从 0 开始 的整数数组 nums ,返回满足下述条件的 不同 四元组 (a, b, c, d) 的 数目 :nums[a] + nums[b] + nums[c] == nums[d] ,且a < b < c < d解题思路 数组长度只有50,直接四层循环暴力可以写,时间复杂度为O(n4{n^4}n4)。由于 nums[a] + nums[b] + nums[c] 可以直接得到 nums[d] ,那么可以用哈希表来查询 nums[d] 是否存在。这个题强制原创 2021-12-29 10:23:53 · 279 阅读 · 0 评论 -
Leetcode 825 适龄的朋友
题目在社交媒体网站上有 n 个用户。给你一个整数数组 ages ,其中 ages[i] 是第 i 个用户的年龄。如果下述任意一个条件为真,那么用户 x 将不会向用户 y(x != y)发送好友请求:age[y] <= 0.5 * age[x] + 7age[y] > age[x]age[y] > 100 && age[x] < 100否则,x 将会向 y 发送一条好友请求。注意,如果 x 向 y 发送一条好友请求,y 不必也向 x 发送一条好友请求。另外原创 2021-12-27 12:55:57 · 1195 阅读 · 0 评论 -
Leetcode 1044 最长重复子串
题目给你一个字符串 s ,考虑其所有 重复子串 :即,s 的连续子串,在 s 中出现 2 次或更多次。这些出现之间可能存在重叠。返回 任意一个 具有最长长度的重复子串。如果 s 不含重复子串,那么答案为 “” 。解题思路 如果枚举重复子串的长度,用滑动窗口和哈希来判重,必定超时。我们有两个可以优化的地方。第一个是枚举重复子串的长度,对于这个长度,大于这个长度的子串中必定不会出现重复子串,小于这个长度的子串中必定会出现重复字串,其具有二分性,那么这里可以用到二分,这里变成了O(lognlognl原创 2021-12-24 11:36:26 · 513 阅读 · 0 评论