LeetCode 1090. Largest Values From Labels【贪心,排序,哈希表】中等
length1 <= n <= 2 * 10^40 <= values[i], labels[i] <= 2 * 10^41 <= numWanted, useLimit <= n 解法 贪心+排序+哈希表 首先将元素按照 values \textit{values} values 的值进行降序排序。待排序完成后,依次遍历每个元素并判断是否选择。如果已选择的元素个数超过了 numWanted 就退出,...
哈希表题目:LFU 缓存
05 次 get \texttt{get} get 和 put \texttt{put} put 前言 这道题是「LRU 缓存」的进阶,实现 LFU 缓存的方法和实现 LRU 缓存的方法相似,都是使用哈希表和双向链表。但是 LFU 缓存需要记录关键字的使用计数,因此情况更加复杂,需要使用两个哈希表记录,并对每个使用计数维护一个双向链表。 解法 思路和算法 实现 LFU 缓存需要使用哈希表和双向链表。双...
《程序员面试金典(第6版)》面试题 16.20. T9键盘(哈希映射,C++)
m中不会出现 0, 1 这两个数字 解题思路与代码 这道题呢,是一道不算太难的题。因为其实很好有思路。 为什么呢?看到这个键盘,我脑子里就出现了俩字,那就是“映射”,对,你猜的没错,这道题其实就是去用哈希映射来解题。 哈希映射做的越好,你这道题的复杂度其实也就越低。 那么接下来我们就看看如何用哈希映射来解决这个问题。 方法一: 使用unordered_map来解决这个问题。 其实真的很简单。我们创建一...
全面理解哈希,哈希的底层原理是如何实现的,哈希题型的做题思路与题目清单(不断更新)
什么是哈希 哈希(Hash)是一种算法,它接受一个输入(或“消息”),并返回一个固定大小的字符串。这个输出字符串的大小通常以字节为单位,输出的内容看起来是随机的且整个过程是单向的。 哈希的一些关键特性包括: 不管你输入的信息有多大,哈希值的大小总是固定的。 即使只改变输入的一点点信息,对应的哈希值也会有很大的变化。 从哈希值是无法恢复原始的输入信息的,这就是为什么说哈希函数是单向的。 哈希在很多领域...
LeetCode 2441. Largest Positive Integer That Exists With Its Negative【哈希集合】简单
输出:-1解释:不存在满足题目要求的 k ,返回 -1 。 提示: 1 <= nums.length <= 1000-1000 <= nums[i] <= 1000nums[i] != 0 解法 哈希集合+一次遍历 用一个哈希表记录出现过的数字。一边遍历,一边看 − nums [ i ] -\textit{nums}[i] −nums[i] 是否在哈希表中,如果在,就更新答案的最大值 。 clas...
哈希表题目:LRU 缓存
put 前言 这道题要求在 O ( 1 ) O(1) O(1) 时间内执行 get \textit{get} get 和 put \textit{put} put 操作,满足该时间复杂度的数据结构是哈希表,即 Java 中的 HashMap \texttt{HashMap} HashMap。但是这道题还要求在关键字数量超出容量时逐出最久未使用的关键字,因此要求关键字按照访问顺序排列。由于 HashM...
【分布式】一致性哈希和哈希槽
当我们拥有了多台存储服务器之后,现在有多个key,希望可以将这些个key均匀的缓存到这些服务器上,可以使用哪些方案呢? 1. 普通哈希取模法 1.1 直接哈希取模 这是一种最容易想到的方法,使用取模算法hash(key)% N,对key进行hash运算后取模,N是机器的数量。key进行hash后的结果对3取模,得到的结果一定是0、1或者2,正好对应服务器node0、node1、node2,存取数据直...
LeetCode 970. Powerful Integers【哈希表,枚举】中等
+ 32 示例 2: 输入:x = 3, y = 5, bound = 15输出:[2,4,6,8,10,14] 提示: 1 <= x, y <= 1000 <= bound <= 10^6 解法 哈希表+枚举 根据题目描述,一个强整数可以表示成 x i + y j x^i+y^j xi+yj ,其中 i ≥ 0 , j ≥ 0 i \ge 0, j \ge 0 i≥0,j≥0 。题目需要找出所有不...
LeetCode 2423. Remove Letter To Equalize Frequency【哈希表】简单
length <= 100word 只包含小写英文字母。 解法1 暴力枚举删除的字符 枚举 w o r d [ i ] word[i] word[i] ,将其去掉后再统计剩余字符的出现次数。用数组或者哈希表统计都行。如果剩余字符的出现次数都相同,则返回 true 。反之,如果无论去掉哪个 w o r d [ i ] word[i] word[i] ,都无法让剩余字符的出现次数都相同,则返回 false...
LeetCode 2418. Sort the People【排序,哈希表】简单
i]]; return ans; }}; 复杂度分析: 时间复杂度: O ( n log n ) O(n\log n) O(nlogn)空间复杂度: O ( n ) O(n) O(n) 解法2 哈希表 由于身高各不相同,所以可以使用哈希表记录每个身高所对应的下标,最后从高到低收集对应名字即可: class Solution {public: vector<string> sortPeople(...