摘要: 2 maps...和刚才做的一个很像。。 java public class Solution { public boolean wordPattern(String pattern, String str) { String[] strings = str.split("\\s+"); if (s 阅读全文
posted @ 2016-11-05 13:48 哇呀呀..生气啦~ 阅读(70) 评论(0) 推荐(0)
摘要: 比较巧妙的办法是先算互不cover的情况。。 然后讨论COVER情况就方便很多了。 java public class Solution { public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) 阅读全文
posted @ 2016-11-05 13:30 哇呀呀..生气啦~ 阅读(74) 评论(0) 推荐(0)
摘要: 快慢指针定位。。 然后不用dummy node比较麻烦。。用了就很省事了。 阅读全文
posted @ 2016-11-05 13:24 哇呀呀..生气啦~ 阅读(72) 评论(0) 推荐(0)
摘要: 这个题我有印象,而且印象特别深。 印象就是这个题是个傻逼题,绝对的傻逼题,尤其是描述,极度含糊不清。 第一行是1,一定的 从第二行开始,每一行是数上一行的数。 比如弟N行是22344 第N+1行就是二个2,一个3,二个4 = 221324... 然后每一行根据上一行来构建,他又没说从1开始还是从0开 阅读全文
posted @ 2016-11-05 12:59 哇呀呀..生气啦~ 阅读(107) 评论(0) 推荐(0)
摘要: 似乎必须2个map,一个不能实现。 Time: O(k) Space: O(256) java public class Solution { public boolean isIsomorphic(String s, String t) { if (s.length() == 0) return 阅读全文
posted @ 2016-11-05 12:43 哇呀呀..生气啦~ 阅读(67) 评论(0) 推荐(0)
摘要: 左右子树选短的,但是注意如果没有子树不能选0,一开始做错一次。。 阅读全文
posted @ 2016-11-05 12:38 哇呀呀..生气啦~ 阅读(88) 评论(0) 推荐(0)
摘要: DFS time: O(n) space: O(n) 其实可以剪枝。找到一个之后就不用找另一边了。 仔细一想好像又不用。。 || 运算左边满足右边不会算的。。。 阅读全文
posted @ 2016-11-05 11:48 哇呀呀..生气啦~ 阅读(98) 评论(0) 推荐(0)
摘要: 光记得一刷应该是扫了两遍,其实一遍就行了。 不要想着用guess去match secret,要互相MATCH。 一样的话就BULL++ 不一样的话,看情况。如果guess的当前字母在secret出现过,那么cows++;如果secret的字母在guess出下锅,也cows++. guess用++代表 阅读全文
posted @ 2016-11-05 11:45 哇呀呀..生气啦~ 阅读(116) 评论(0) 推荐(0)
摘要: 。。。。 一开始算了几次TLE。。 三刷发现自己不会二分了。 最后还是套用了YES LEFT NO RIGHT做的。。 java / The guess API is defined in the parent class GuessGame. @param num, your guess @ret 阅读全文
posted @ 2016-11-05 11:35 哇呀呀..生气啦~ 阅读(86) 评论(0) 推荐(0)
摘要: 这个题挺有意思的,O(nk)的办法比较简单,K是pattern的长度。 说说O(n)的。 一开始O(NK)只是觉得滑窗之后没必要每次都遍历整个pattern。 比如右边新加入的char,在map中找不到,那么就开始缩小窗口,这个过程中会增加map中的char个数。 比如a b c a找 abc,ri 阅读全文
posted @ 2016-11-05 10:32 哇呀呀..生气啦~ 阅读(1011) 评论(1) 推荐(0)
摘要: 数独判断。。 楞做。。 Time: O(k²) k = length of board (9) space: O(k) java public class Solution { public boolean isValidSudoku(char[][] board) { if (board.leng 阅读全文
posted @ 2016-11-05 08:12 哇呀呀..生气啦~ 阅读(82) 评论(0) 推荐(0)
摘要: 这个其实挺难的,第二次做还是不太会。 题目说的without extra space其实是想表达constant space.. 主要就是不让转化为Sring或者重新allocate another array.. 正常做的话反着一位一位组成一个新的值,和原来的比较。。 Time: O(lgN) S 阅读全文
posted @ 2016-11-05 06:29 哇呀呀..生气啦~ 阅读(84) 评论(0) 推荐(0)
摘要: 这个题以前做的不对,以前实际上是在期间建立templist了。 要用list.set(i,j)来做才满足O(k) java public class Solution { public List getRow(int rowIndex) { List res = new ArrayList(); f 阅读全文
posted @ 2016-11-05 05:10 哇呀呀..生气啦~ 阅读(74) 评论(0) 推荐(0)
摘要: 只有2和5相乘能出现0. 然后每出现一个5,能出现好几个2,所以凑2和5的话,看5就行了,2是足够的。。 比如10!, 10/5得到2,目前有2个5,很多2,所以最后有2个0,跟5有关。。 注意因为是trailing,第一个0不算,N=0的时候结果是0不是1. 阅读全文
posted @ 2016-11-05 04:42 哇呀呀..生气啦~ 阅读(78) 评论(0) 推荐(0)
摘要: 正规做法是用一个STACK记录信息,每次PUSH都先把Stack里的所有东西弄到另一个stack里,添加当前X,然后再都弄回去。。 POP和PEEK都一样。 如果记录HEAD的话 PEEK就不用麻烦了。 也有用两个STACK的,一个正着,一个倒着,大同小异……各有利弊吧。。 time: push O 阅读全文
posted @ 2016-11-05 04:38 哇呀呀..生气啦~ 阅读(58) 评论(0) 推荐(0)
摘要: 这种题都是双指针,一个遍历,一个记录有效长度。 一开始需要判断一下。 我一上来用while找到第一个重复的元素以便于更改,其实没必要,我们知道第1个元素无论如何也会在我们的结果中,所以从第二个直接开始遍历就行。。一开始的WHIL过程就是for loop中 nums[j] == nums[j 1]的过 阅读全文
posted @ 2016-11-05 03:58 哇呀呀..生气啦~ 阅读(73) 评论(0) 推荐(0)
摘要: 正常DFS是check一个点的左右深度,比较,满足的话再check左右节点,这样的话有很多重复运算。 bottom up就比较合理,一旦发现不满足的,可以不再CHECK,直接返还FALSE就行了。 和那个找least common ancestor的有点像 回头看很多E难度的题不是做完了就那么简单的 阅读全文
posted @ 2016-11-05 03:38 哇呀呀..生气啦~ 阅读(73) 评论(0) 推荐(0)