![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hash
我要上岸!!!
这个作者很懒,什么都没留下…
展开
-
LintCode 526 Load Balancer
思路要求三个方法都是O(1)的时间复杂度使用一个HashMap存储server_id(key)和对应的index(value),可以使得put和remove的时间都为常数级使用一个ArrayList存储所有的server_id,方便通过索引随机pick一台服务器remove方法:在arraylist中删除元素,如果仅仅使用其自带的remove方法,时间复杂度为O(n), 因为相当于在数组中...原创 2019-03-17 13:20:24 · 383 阅读 · 0 评论 -
LeetCode 692 Top K Frequent Words
思路自定义类Pair用于存储String和对应的出现次数。首先遍历一遍所有字符串,将所有字符串和其出现次数先存储在一个hashmap中;然后遍历整个hashmap,在创建pair的同时将其插入一个priority queue中(最小堆);最后将pq中的所有元素poll出来,然后做一个逆序后输出即可。【需要自定义优先队列的比较器,因为参与排序的键有2个:freq和str的顺序。其中freq是越高...原创 2019-03-13 13:19:23 · 110 阅读 · 0 评论 -
LeetCode 527 / LintCode 639 Word Abbreviation
思路根据给定的规则,定义:(1)阶段数组prefix,存放当前字符串的位于的阶段;(2)定义一个保存结果的数组ans,存放当前阶段的缩写;(3)一个hashmap:count,用来记录当前结果ans在整个ans中的出现次数。首先从头遍历一遍整个dict,记录好ans,prefix和hashmap然后定义一个while(true)循环,里面一直更改重复的ans,直到所有的ans都唯一。...原创 2019-04-06 13:36:04 · 358 阅读 · 0 评论 -
LeetCode 438 Find All Anagrams in a String
思路hash table + sliding window分别建立对于s和p的hash table,大小为26。首先建立p的hash table,然后遍历s中的字符,建立s的hash table并且每加入一个新字符+去掉一个旧字符的同时,比较s_map和p_map的内容(耗时O(26) => O(1)),如果一致就将开头的索引加入结果list。复杂度时间复杂度O(n*26) = O(...原创 2019-04-02 12:27:22 · 128 阅读 · 0 评论 -
LeetCode 242 Valid Anagram
思路使用2个hash table,依次记录s和t中字符的出现次数,最后比较1次即可。复杂度时间复杂度O(n), 空间复杂度O(1)代码public class Solution { /** * @param s: The first string * @param t: The second string * @return: true or fal...原创 2019-04-02 13:34:04 · 69 阅读 · 0 评论 -
LintCode 634 Word Squares (LeetCode 425)
思路dfs+剪枝。这里是枚举型dfs:模拟多层嵌套的for循环。因为单词长度最多为5,所以最多5层循环,但是这里还是使用dfs来实现,目的一个是为了美观,另外也是为了如果遇到很多层循环要嵌套的作准备。dfs的过程就是在一个一个尝试所有的可能性,如果两个单词能依次放在一起,那么二者就有一条边相连。这里说一下剪枝的过程:(1)在放下一个单词的时候,直接从之前放过的单词里计算一个前缀prefix出来,...原创 2019-05-22 16:05:12 · 273 阅读 · 0 评论 -
LeetCode 409 Longest Palindrome
思路统计字符出现次数,偶数的话直接加到sum里面,如果奇数的话减一后加到sum里面并且flag=1(标记)。最后sum要加上奇数标记flag(最后再加上1,因为所有的奇数频率中可以有一个放在正中间:aabbbcc,因此可以有一个奇数频率的字母不用-1, 但是flag是有用的,因为如果所有的字母出现次数都是偶数,那么就不需要-1了)。技巧:字符哈希,int[128] charmap映射ASCI...原创 2019-06-23 16:02:31 · 62 阅读 · 0 评论