刷题记录:哈希 | leetcode-2352. 相等行列对 2023/6/6
2352. 相等行列对 这题还是非常简单的。如果用模拟的方法,时间复杂度要达到O(n^3)了,感觉不太可。 这回学聪明了,没有一上来就想着暴力模拟。用哈希的办法,可以把时间复杂度降为O(n^2)。 我的思路是先转置矩阵,再用哈希Map。基本思路就是把grid当中的每一行存到一个哈希Map里,并记录它出现的次数;然后比对转置数组tmp的每一行是否在哈希Map中出现,以及出现的次数。 我想先转置矩阵的原因...
数据库期末复习(6)基于哈希和B+树的索引查询
免责声明 练习题没有答案 图片都是自己做的 仅供参考 可扩展哈希表和练习 笔记 数据库--- 索引结构 (2)--可扩展哈希表及增删查_旅僧的博客-CSDN博客 练习 首先默认 局部深度都是1 然后进行插入 之后分裂 按照课件上的操作进行。 线性哈希表 ...
哈希表题目:Lisp 语法解析
\texttt{32} 32 位整数范围内题目保证给定的表达式有效且可以计算得到一个整数 解法 思路和算法 由于 Lisp 表达式中存在括号嵌套以及变量赋值,因此解析 Lisp 表达式需要使用到栈和哈希表这两种数据结构。由于内层表达式的结果会被外层表达式使用,因此还需要存储每一层的表达式,为了得到每一层的表达式的类型和最后一个部分的内容,使用双端队列存储表达式的每一个部分。基于上述分析,解析 Lis...
谈谈一致性哈希算法
一致性哈希算法是1997年由麻省理工的几位学者提出的用于解决分布式缓存中的热点问题。大家有没有发现,我们之前介绍的例如快排之类的算法是更早的六七十年代,此时分布式还没有发展起来,大家往往还在提高单机性能。但是九十年代开始,逐渐需要用分布式集群来解决大型问题,相应的算法研究也就应运而生。在说到一致性哈希算法,我们还是得先从缓存的发展谈起:缓存,我们一般是用来提速的,当规模或者说数据量小时,我们往往用单机...
刷题记录:哈希表+双指针 | leetcode-2465. 不同的平均值数目 2023/6/4
2465. 不同的平均值数目 这道题挺容易的。主要是排序+哈希。题目里有明显的去重的意思,所以哈希set是肯定有的。找最大最小,最方便的就是排序。这里我为了操作方便,把数组nums拷贝到了集合list里面。排一次序,之后取最大值最小值都很方便。 Collections.sort()方法,可以给Collection集合排序。 我的答案是这样: class Solution { Set<Double> s...
什么是一致性哈希?一致性哈希是如何工作的?如何设计一致性哈希?
如果你有 n 个缓存服务器,一个常见的负载均衡方式是使用以下的哈希方法:服务器索引 = 哈希(键) % N,其中 N 是服务器池的大小。让我们通过一个例子来说明这是如何工作的。如表5-1所示,我们有4台服务器和8个字符串键及其哈希值。 为了获取存储某个键的服务器,我们执行模运算 f(键) % 4。例如,哈希(键0) % 4 = 1 意味着客户端必须联系服务器1来获取缓存的数据。图5-1展示了基于表...
《程序员面试金典(第6版)》面试题 02.08. 环路检测(哈希法,双指针,检测链表是否有环)
[1], pos = -1输出:no cycle解释:链表中没有环。 进阶: 你是否可以不用额外空间解决此题? 解题思路与代码 这道题算是比较简单的一道题。检测链表是否存在环的最简单的一种方法是哈希法,其次就是快慢指针法。那么前者的空间复杂度可能会高些,但是代码结构简单易懂。 后者虽然说比前者稍微难点,但也没有难太多,多了一点点的思考量而已。 总的来说,这道题是一道好题,考验了你一点点的数学思维...
《程序员面试金典(第6版)》面试题 02.07. 链表相交(查找节点操作,哈希表,双指针(先走n步法,交替遍历法))
也必须相等才行。所以判断的时候,不能是 a->val == b->val 这么去判断 。而得是 a == b 这么去判断(a,b指的都是链表节点) 所以,说到这里,这道题就有三种方式去做这道题,分别是哈希法,双指针法(先走n步),双指针法(走完一边,走另一边),下面就让我来一一为大家,去展示这三种方式都是如何做的。 方案一:哈希法 这道题我认为最简单易懂的就是哈希法,我们将headA的节点全部遍历进一...
哈希表题目:最大相等频率
长度的前缀,都可以根据上述 4 4 4 种情况判断前缀是否符合要求。 根据上述分析可知,判断一个前缀是否合法时,需要计算前缀中的不同元素个数、每个元素的出现频率以及每个频率的出现次数,因此需要使用两个哈希表分别记录每个元素的出现频率和每个频率的出现次数,这两个哈希表分别为元素频率哈希表和频率次数哈希表。 从左到右遍历数组 nums \textit{nums} nums,对于 0 ≤ i < n 0 \...
《程序员面试金典(第6版)》面试题 02.01. 移除重复节点(哈希映射,多指针暴力破解,链表)
00]范围内。 进阶: 如果不得使用临时缓冲区,该怎么解决? 解题思路与代码 这道题是一道比较简单的题。主要考验的是你对链表这种数据结构的操作能力。比如如何删除一个节点。其次呢,还可能考察了你如何使用哈希映射去去重的能力。 具体呢这道题有两种做法,接下来就让我们仔细分析一下这两种做法各有什么区别。 方案一:哈希映射找出多余的节点后删除 这种方法主要就是依靠哈希映射去看看元素有没有被重复添加,我们在这里...