01 2017 档案

摘要:最后更新 三刷 16 Jan 2017 数学题= = 加一点点动态规划。 dp[n]表示 N能分成的最小数量。。 然后无非就是看一个数怎么分= =拿12来说: 9+3 1 + dp[3] ... 4+8 1 + dp[8] ... 1+11 1 + dp[11] 看哪个最少就是哪个分完就保存一下,以 阅读全文
posted @ 2017-01-17 04:02 哇呀呀..生气啦~ 阅读(134) 评论(0) 推荐(0)
摘要:最后更新 一刷 16 Jan 2017 这个题我甚至不知道该怎么总结。 难就难在从这个题抽象出一种解法,看了别人的答案和思路= =然而没有归类总结到某种类型,这题相当于背了个题。。。 简单的说,除了最外面的4个点,所有的点都会2次2次的出现,如果有覆盖,覆盖进去的点就不是成对出现了。 最外面4个点围 阅读全文
posted @ 2017-01-17 03:43 哇呀呀..生气啦~ 阅读(227) 评论(0) 推荐(0)
摘要:最后更新 三刷 15 Jan 2017 好熟悉的题了,DFS做,注意比如1 3是经过2的,如果2被访问过,那么1 3也是可以的。 java public class Solution { public int numberOfPatterns(int m, int n) { int[][] path 阅读全文
posted @ 2017-01-16 03:49 哇呀呀..生气啦~ 阅读(234) 评论(0) 推荐(0)
摘要:最后更新 二刷 15 Jan 2017 翻船了= = 还是要仔细点。 Time: O(n) Space: O(1) java public class Solution { public boolean isStrobogrammatic(String num) { int l = 0; int r 阅读全文
posted @ 2017-01-16 03:09 哇呀呀..生气啦~ 阅读(217) 评论(0) 推荐(0)
摘要:最后更新 二刷 15 Jan 2017 用右起第二位来表示更新结果,这样最右位依然可以用来判断。 最后再遍历一次全部更新就行了。 做得好傻逼,应该可以用1 0 1 0 1这样滚动来做。 Time: O(MN) Space: O(1) java public class Solution { publ 阅读全文
posted @ 2017-01-16 03:05 哇呀呀..生气啦~ 阅读(324) 评论(0) 推荐(0)
摘要:跳 本来懒得记录= =但是找工作前的代码真是丢人。。。 这应该是UF最好的应用之一了。 二维转一维建UF 需要注意 x col + y 算完结果的i再传到union或者find里比find(x, y)这样进去再算好多了。。我是不是傻逼啊 UNION的标准是题的关键, 上下左右相邻。不用UF做的话牵扯 阅读全文
posted @ 2017-01-14 06:47 哇呀呀..生气啦~ 阅读(190) 评论(0) 推荐(0)
摘要:最后更新 三刷 13 Jan 2017 用“”表示出现过的单词,这样最后判断的时候就知道是不是唯一,还是压根不存在。。 java public class ValidWordAbbr { Map map; public ValidWordAbbr(String[] dictionary) { map 阅读全文
posted @ 2017-01-14 04:55 哇呀呀..生气啦~ 阅读(219) 评论(0) 推荐(0)
摘要:刷 July 15 2019 这个题蛮有意思的,有2种做法。 第一种是encode的时候escape character。 比如用 来区分不同String,遇到String里有 怎么办,加个别的符号%在前面。 String里有%怎么办,再加个%%在前面。 最后的结果就是, 单独出现的话,说明是新的S 阅读全文
posted @ 2017-01-14 04:45 哇呀呀..生气啦~ 阅读(247) 评论(0) 推荐(0)
摘要:最后更新 三刷 13 Jan 2017 楞做法,这次尝试写的好看点。 结果写成了一坨。 java public class Solution { public boolean validUtf8(int[] data) { if (data.length == 0) return true; int 阅读全文
posted @ 2017-01-14 04:23 哇呀呀..生气啦~ 阅读(203) 评论(0) 推荐(0)
摘要:刷 2019 July 08 和296的区别就是,有了障碍的存在,导致没法简单地纵向横向算距离= = 然后从每个点开始BFS,难点在于: 为了不走回头路,从一个点开始BFS的时候得标记走过的格子,需要一个新的boolean[m][n]的来标记,然后这个点走完需要reset 需要另一个int[m][n 阅读全文
posted @ 2017-01-14 03:44 哇呀呀..生气啦~ 阅读(444) 评论(0) 推荐(0)
摘要:最后更新 二刷 12 Jan 2017 正规做应该是以每个empty room做BFS,最坏的情况是整个地图里全是room。。 值得思考的一个做法是,以每个gate做搜索= = BFS的话,先搜到的房间肯定是最短距离。 DFS的话,要配合backtrack,按理说BFS快,但是实际结果是DFS简单得 阅读全文
posted @ 2017-01-13 06:38 哇呀呀..生气啦~ 阅读(286) 评论(0) 推荐(0)
摘要:最后更新 二刷 12 Jan 2017 M难度的。。 如果用BFS来做,就变成H难度的了。 首先统计每行有几个人,每列有几个人。 然后看哪一行使得纵向距离最短,哪一列使得横向距离最短就行了。。 Time: O(mn) Space: O(m + n) java public class Solutio 阅读全文
posted @ 2017-01-13 05:36 哇呀呀..生气啦~ 阅读(172) 评论(0) 推荐(0)
摘要:最后更新 二刷 12 Jan 2017 看了一刷的做法,发现自己二刷做的真是丑陋。。重新按一刷思路做了一下。。 还是从右往左找第一个不是9的数位。。都是9的话答案就是1000000000000这= = java public class Solution { public int[] plusOne 阅读全文
posted @ 2017-01-13 04:04 哇呀呀..生气啦~ 阅读(302) 评论(0) 推荐(0)
摘要:刷 July 17 2019 一开始用Stack做的,来回倒腾: 不是右括号进栈 右括号的话就开始POP找左括号,找到就有了需要重复的String,然后看重复几次,重复完了司塞回去继续。 有很多edge case忽略了,比如digit大于10;经常要reverse之类的 看以前自己写的答案,可以不用 阅读全文
posted @ 2017-01-13 03:22 哇呀呀..生气啦~ 阅读(260) 评论(0) 推荐(0)
摘要:最后更新 二刷 11 Jan 2017 第一种方式是各种pointer标记轮到哪个LIST,在那个LIST是什么index,比较繁琐。 第二种方式是用Queue ,每次拿出最前面的list,拿出里面的element,然后如果此时list不是空的,从屁眼塞回原来的Queue里。 Time Comple 阅读全文
posted @ 2017-01-12 06:31 哇呀呀..生气啦~ 阅读(140) 评论(0) 推荐(0)
摘要:最后更新 三刷。 11 Jan 2017 简单的二叉树,没啥技巧可言,DFS.. Time: O(n) Space: O(depth) 好像就是楞做,记录长度就行了。 判断失败就从0开始。。 iterative比较难啊。。貌似得记录每一个NODE的当时情况,就得有个MAP之类的了。。 先不考虑了 二 阅读全文
posted @ 2017-01-12 05:48 哇呀呀..生气啦~ 阅读(141) 评论(0) 推荐(0)
摘要:最后更新 一刷 11 Jan 2017 这个题是Ez难度的吧。。。 注意edge cases就行。 熟悉下Character的方程: Character.isDigit(c); Character.isAlphabetic(c); 另外String.toUpperCase()就可以,没必要每一个ch 阅读全文
posted @ 2017-01-12 05:02 哇呀呀..生气啦~ 阅读(209) 评论(0) 推荐(0)
摘要:最后更新 二刷 11 Jan 2017 首先,正常做的话,是每个格子都纵向横向CHECK一下,这样复杂度爆炸。。 看起来是用dp[][]记录情况,避免重复计算。但是这样的话,得有2个dp[][],分别记录某一个格子可在横向和纵向分别干死多少敌人。 空间复杂度又爆炸。。O(2MN) 不过可以优化。 遍 阅读全文
posted @ 2017-01-12 04:18 哇呀呀..生气啦~ 阅读(645) 评论(0) 推荐(0)
摘要:最后更新 三刷。 10 Jan 2017 这个题印象挺深的,当时连PQ自定义comparator都不会。 最直接的就是把所有组合都加到PQ里,然后POP出K个。 稍微好点的是选其中一个numsA里最小的和另一个numsB里所有的数组合,加进PQ, 保证PQ里只有K个。 第一个Pop出的肯定是最小的P 阅读全文
posted @ 2017-01-11 05:39 哇呀呀..生气啦~ 阅读(169) 评论(0) 推荐(0)
摘要:最后更新 四刷 10 Jan 2017 白送的题。 注意3点: 1) int[][] dp最好长宽都多加一行。要不累加的时候第一行第一列都要当做特殊情况处理= = 2) 注意index的选取= =容易混乱 3) 我他妈了个逼的长得太帅了。 Time: init: O(mn) query: O(1) 阅读全文
posted @ 2017-01-11 03:12 哇呀呀..生气啦~ 阅读(152) 评论(0) 推荐(0)
摘要:最后更新 二刷。 10 Jan 2017 树状数组的话(FenWickTree)从一维延展到二维,并没有影响使用。 直接秒掉好吧。。太爽了。 Time: init: (MNlgMN) query/update : lgMN 一刷。 01 Dec 2016 从一维变成二维了。 线段树也能用,小tric 阅读全文
posted @ 2017-01-11 02:59 哇呀呀..生气啦~ 阅读(283) 评论(0) 推荐(0)
摘要:最后更新 四刷 09 Jan 2017 区间内频繁查找,更新。。 先用线段树(SegmentTree)来做,这个题几乎是把线段树的操作都用了一遍。 每个NODE只有4种可能 1)如果l r包含了整个NODE,那么就是这个node; 2)如果l r在整个NODE范围的外面,那么无视此node; 3)如 阅读全文
posted @ 2017-01-11 02:37 哇呀呀..生气啦~ 阅读(213) 评论(0) 推荐(0)
摘要:最后更新 二刷? 是个E难度的。。无所谓了。 区间内求和,但是不需要更新,只是反复差找,所以不是很有必要用线段树。 Time: Initialization: O(n) query: O(1)... Space: O(n) java public class NumArray { int[] dp; 阅读全文
posted @ 2017-01-10 11:12 哇呀呀..生气啦~ 阅读(165) 评论(0) 推荐(0)
摘要:最后更新 二刷 09 Jna 2017 利用线段树进行区间查找,重点还是如何判断每一层的覆盖区间,和覆盖去见与当前NODE值域的关系。 java public class Solution { public int query(SegmentTreeNode root, int start, int 阅读全文
posted @ 2017-01-10 10:39 哇呀呀..生气啦~ 阅读(118) 评论(0) 推荐(0)
摘要:最后更新 二刷 09 Jan 17 正儿八经线段树的应用了。 查找区间内的值。 对于某一个Node,有这样的可能: 1)需要查找区间和当前NODE没有覆盖部分,那么直接回去就行了。 2)有覆盖的部分,覆盖部分作为新的查找区间,往左右子找。 Time: O(NlgN) Space: O(lgN) fo 阅读全文
posted @ 2017-01-10 10:31 哇呀呀..生气啦~ 阅读(102) 评论(0) 推荐(0)
摘要:最后更新 二刷 08 Jan 2017 利用线段树来更改,找到更改的NODE,然后更改那个brach上的所有max值。 首先确定recursion的终止条件 然后通过判断大小来找方向 找到NODE之后post order来进行更改。 java public class Solution { publ 阅读全文
posted @ 2017-01-10 10:00 哇呀呀..生气啦~ 阅读(167) 评论(0) 推荐(0)
摘要:最后更新 08 Jan 2017 开始介绍线段树的主要作用了,可以快速在区间查找极值,我猜是这样的。。。。。 一个NODE的最大值取决于它左边和右边最大值里大 按个,所以,所以什么?对了,我们该用post order traversal来构建。 阅读全文
posted @ 2017-01-09 07:17 哇呀呀..生气啦~ 阅读(104) 评论(0) 推荐(0)
摘要:最后更新 二刷 08 Jan 2017 一刷忘了什么时候做的,只是觉得这几个题挺好的,一步一步手动构建线段树,最终理解了这个数据结构,并且后面有利用的地方。 其实重要的3个东西题目已经提供了: 1) left end) return null; SegmentTreeNode tempRoot = 阅读全文
posted @ 2017-01-09 06:40 哇呀呀..生气啦~ 阅读(116) 评论(0) 推荐(0)
摘要:最后更新 二刷 08 Jan 2017 和76、159很像。。 2 pointers.. 通过判断是否每一次是有效读取来增减accumulator,从而判断当前是否符合规定,再来更新maxLength Time: O(n) Sapce : O(1) 阅读全文
posted @ 2017-01-09 06:03 哇呀呀..生气啦~ 阅读(209) 评论(0) 推荐(0)
摘要:最后更新 二刷 08 Jan 17 回头看了下一刷的,用的map,应该是int[256]的意思,后面没仔细看cuz whatever I was doing at that time.. wasnt good 做法和LC 76非常像,用2 Pointers + 计数来判断是否满足。 这里“有效读取” 阅读全文
posted @ 2017-01-09 05:54 哇呀呀..生气啦~ 阅读(127) 评论(0) 推荐(0)
摘要:最后更新 一刷 08 Jan 2017 昨天Amazon group面结束,刚回家。 国内以前喜欢的女生结婚了,嘿嘿...好开心呀~~ 这次面试感觉自己的做法完爆别人,比什么2 greedy好多了= = 总之表现比想象的好,最后一面的面试官真是聪明得一逼,我的思路稍微说她就明白,跪了,这也太出色了。 阅读全文
posted @ 2017-01-09 05:21 哇呀呀..生气啦~ 阅读(418) 评论(0) 推荐(0)