![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hashmap
文章平均质量分 68
bsbcarter
这个作者很懒,什么都没留下…
展开
-
*LeetCode-Anagrams
又忘记了lc没有hashtable 要用hashmap 几个常用函数还是不太记得,尤其是最后一个循环里面的for each方法 entryset 还有就是list可以addAll出错的是最后加入答案的时候没有判断对于一个key 它的value里面有几个string 只有一个的话就没有和它是anagram的这个题还有一点就是怎样sort一个string 要先变成char 数组 再sort原创 2015-03-09 10:36:35 · 280 阅读 · 0 评论 -
**LeetCode-Substring with Concatenation of All Words
首先记录一个map 数字典里面的word 每个出现几遍, 然后对于string 扫3遍 (假如word length是3)每次有一个offset开始这样就能保证把每个情况错开的word都包含全判断是否涵盖了dict里面所有词并且使用频率也对 是通过另一个map的每个词个数不可以超dict的map 并且总count等于dict里面词的个数然后每次记录一个start 开始每个词假如另一个m原创 2015-11-25 07:39:10 · 344 阅读 · 0 评论 -
*LeetCode-Candy
一开始的思路是先把这个ratings array sort 然后从小的rating开始fix 之后fix更大的 小的就不会受影响 但是排序的话就需要储存位置和rating值 需要用map 废了空间 还sort费时间 超时了但是也练习了一下如何sort map basing on valuepublic class Solution { public int candy(int[原创 2015-10-12 01:51:45 · 235 阅读 · 0 评论 -
LeetCode-Word Pattern
才发现hashmap还有一个contains value function 但是由于他是把所有value都扫一遍 还不如存两个hashmap呢public class Solution { public boolean wordPattern(String pattern, String str) { HashMap map = new HashMap ();原创 2015-10-26 09:40:53 · 264 阅读 · 0 评论 -
*LeetCode-Longest Consecutive Sequence
用了一个hashmap存每个数字到目前为止最长的length 没加入一个数 看他的n-1和n+1在不在map里面 假如在 那左边数字的value就是n左边有多少个连续数字 不存在左边长度就是0右边同理 然后length = leftLen + rightLen + 1 放入 最重要的一步是要push boundary,自己更新之后 最左边和最右边的数字也要更新 以便以后使用之中ke原创 2015-10-07 04:28:01 · 230 阅读 · 0 评论 -
LeetCode-Shortest Word Distance II
因为需要多次call 所以就存成hashmap 存position list关键是找min的时候 实际上就是给两个list 找其中数字最小difference 方法就是每次更新那个小的 让他变大 去靠近大的 ( 因为list是sorted 从小到大)移动数字比较小的那个的指针public class WordDistance { HashMap> map = new HashM原创 2015-10-22 02:26:20 · 524 阅读 · 0 评论 -
LeetCode-Contains Duplicate II
以为要记录duplicate的位置 所以想到了用一个hash map key是值 value是一个位置array首先list的操作不熟悉 list要用arraylist实现 并且要记得用add,取值用gethashmap是使用put,getpublic class Solution { public boolean containsNearbyDuplicate(int[] n原创 2015-09-16 08:16:02 · 194 阅读 · 0 评论 -
*LeetCode-Course Schedule II
烦死了!!!怎么那么多错!!先是如果用matrix存 那么后来每次都要扫一遍特定一个pre的这一行或一列 慢 超时了然后如果用map《int list》存 就不会访问不存在的边然后就发现需要判断那个list是否为null 这里要用continue!!!不是break!!!public class Solution { public int[] findOrder(int原创 2015-10-01 06:45:25 · 242 阅读 · 0 评论 -
*LeetCode-Unique Word Abbreviation
这个题也很简单 但是要想全可能存在的情况 所以假如只有hello 那hello是可以的 或者根本dict里面没有这个词 也没有这个词的abb也是可以的我用了map of string and int 来count有几个这样的abb 还用了一个set来记录dict里面的词 这样很浪费简便方法是用abb做key 但是value就用dict里面的词本身 假如第二次碰到这个abb了 那么把valu原创 2015-10-17 09:03:54 · 473 阅读 · 0 评论 -
LeetCode-Group Shifted Strings
不难 只是细节很多 map list等的细节还是需要背啊public class Solution { public List> groupStrings(String[] strings) { HashMap, List> map = new HashMap, List>(); for ( int i = 0; i < strings.length;原创 2015-10-17 07:46:16 · 752 阅读 · 0 评论 -
*LeetCode-Two Sum
不知为什么印象中上次是用二分查找做的,但是这次超时,看提交记录发现上次就是用的hashmaphashmap 的key用数组element的值,value用对应的index,这样扫一遍就可以了。关于没有dup key但是数组中有dup 数值,可以看下面的讨论。hashmap在java中插入是o(1)的,在c++中是o(n)的,所以这个解法在java是o(n)二分查找写的时候忘原创 2015-03-04 00:15:48 · 355 阅读 · 0 评论 -
LeetCode-Clone Graph
不要被题的样子吓到 只是很简单的recursive 但是记得node要存在hashmap里面 已经建立过的node就不要再建一遍了public class Solution { private HashMap map = new HashMap(); public UndirectedGraphNode cloneGraph(UndirectedGraphNode node)原创 2015-09-29 07:57:28 · 253 阅读 · 0 评论 -
LeetCode-LRU Cache
这题主要考察数据结构,想要快速access 就想到array 但是有key value所以要用hashmap 加上需要在访问过后 放到队头 capacity满了之后要删除队尾 所以要用double linked list写的时候有很多细节,每次get和set都要注意把这个节点放到队头(或尾)这时候要看这个节点是不是本来就在队头。还有就是内部的node class 也就是double linke原创 2015-03-31 10:26:06 · 380 阅读 · 0 评论 -
LeetCode-Longest Substring Without Repeating Characters
This question belong to the same category as those such as "longest substring without repeating characters", "minimum window substring", and "substring with concatenation of all words". To solve thi原创 2015-03-10 01:29:10 · 305 阅读 · 0 评论 -
**LeetCode-Minimum Window Substring
这种题都是hashmap加two pointers思想 但是移动start pointer的rules不一样 以及判断是否包含了所有的字母找到了答案的方法也不太一样这个题也是先统计总共需要哪些字母 需要多少个 然后开始扫同样是要找到有效count等于需要的总count之后表示找到了答案 然后这个题的start指针记得要挪动到下一个valid字母处public class Solutio原创 2015-11-26 01:59:39 · 310 阅读 · 0 评论