08 2016 档案

摘要:和普通的binary search不同就是在处理找到等于target的数 首先要记录这个结果,然后我们现在其实是需要向左找,右边的数都不重要,因为我们要找最左出现的,我们就假设现在的情况是nums[mid] > target,所以high = mid - 1.如果找不到了,那么之前的结果就是最左侧的 阅读全文
posted @ 2016-08-30 07:05 warmland 阅读(228) 评论(0) 推荐(0)
摘要:本质上就是topological sort. 1. 统计所有的点 对于每一个string,把所有的字母都加入indegree 2. 构建图,统计indegree 对于没连续的一组str,找到第一个不同的字母,把后一个加入前一个字母的neighbor,并且给后一个字母indegree+1. 需要注意的 阅读全文
posted @ 2016-08-29 04:58 warmland 阅读(353) 评论(0) 推荐(0)
摘要:题目本身:https://leetcode.com/problems/inorder-successor-in-bst/ Given a binary search tree and a node in it, find the in-order successor of that node in 阅读全文
posted @ 2016-08-22 04:38 warmland 阅读(253) 评论(0) 推荐(0)
摘要:也是卡了好多天的题目 主要就是介绍了union-find的算法,用于检查Undirected graph有没有环 http://www.geeksforgeeks.org/union-find/ 阅读全文
posted @ 2016-08-20 04:13 warmland 阅读(150) 评论(0) 推荐(0)
摘要:这题又烦了我好几天………… https://discuss.leetcode.com/topic/21605/accepted-c-java-o-n-time-o-1-space-easy-solution-with-detail-explanations 这个朋友的想法太厉害啦 方法: 1. 第一 阅读全文
posted @ 2016-08-19 03:04 warmland 阅读(138) 评论(0) 推荐(0)
摘要:O(n). index_x保存以上一次增长之前的数字位置,factor_x记录当前最小的可能 阅读全文
posted @ 2016-08-13 11:02 warmland 阅读(217) 评论(0) 推荐(0)
摘要:一定要注意…………审题!!!! 阅读全文
posted @ 2016-08-13 10:55 warmland 阅读(151) 评论(0) 推荐(0)
摘要:和3Sum比较像 我觉得这种方法没有有效跳过重复数字,但是ac了。 O(n) 阅读全文
posted @ 2016-08-12 09:57 warmland 阅读(137) 评论(0) 推荐(0)
摘要:昨天写的,几乎要超时。600ms+ = =换了种方法直接LTE了 阅读全文
posted @ 2016-08-12 01:00 warmland 阅读(182) 评论(0) 推荐(0)
摘要:这个结构是里面一个double linked list和map, 把key&DLinkedListNode对应起来,不用重头搜 稍微长一点的代买就发现自己错误百出: 1.看清楚return的类型,get方法return的是int,不要返回node 2.函数名变量名搞清楚 值得注意的是LRU的cons 阅读全文
posted @ 2016-08-11 09:21 warmland 阅读(215) 评论(0) 推荐(0)
摘要:一,正常的方法 二,特殊方法 阅读全文
posted @ 2016-08-11 08:25 warmland 阅读(129) 评论(0) 推荐(0)
摘要:还是有bug,因为需要注意处理根节点,如果每往下走一点就增加"->x"的话,返回的结果会是“->a->b->c” 试着开始就左右分开走,但是因为如果左右节点都为空的根节点又需要单独处理很麻烦,所以每次就是添加到List<Stirng>res里面的时候把头上的"->"切掉 阅读全文
posted @ 2016-08-11 08:01 warmland 阅读(120) 评论(0) 推荐(0)
摘要:1. 把整个图色看成是一棵树,然后dfs 根节点有三个分叉:r,g,b 第二层(g,b),(r,b),(r,g) 所以就是相当于path sum 时间复杂度应该是O(2^n) 哈哈然后LTE了 2. 动规 既然递归会超时,那就动规了 这样只有O(N)了 阅读全文
posted @ 2016-08-11 07:48 warmland 阅读(386) 评论(0) 推荐(0)
摘要:就是backtracking 要注意的是 helper函数需要有一个int start记录开始的点,不然比如说分解12的时候会有重复,[2,2,3],[3,2,2]会变成两组加进去,所以每次分解的时候不能比上一次的factor大 阅读全文
posted @ 2016-08-11 04:54 warmland 阅读(177) 评论(0) 推荐(0)
摘要:一. 正常的方法, PriorityQueue 1.先把intervals按照开始的时间排序 2. 建一个PriorityQueue,按照结束的时间排序,这样每次poll()出来的都是最早结束的那个会议,开始先把第一个开始的会议放进去 3. 对于每一个intervals,即下一个开始的会议 earl 阅读全文
posted @ 2016-08-11 04:10 warmland 阅读(232) 评论(0) 推荐(0)
摘要:把intervals建成一个arrayList然后重新写一个自己的comparator,对intervals排序,按照开始时间排序,如果开始时间是一样的,就按照结束时间排序 最后对所有的interval都检查一遍,如果前一个的结束时间在这一个的开始之后,那就返回false.如果检查完了也没有问题,那 阅读全文
posted @ 2016-08-11 02:39 warmland 阅读(207) 评论(0) 推荐(0)
摘要:1. 用普通方法做,不用iterator. 要设置两个变量,一个指向目前遍历到的list的位置,一个指向目前的list里面元素的位置。 hasNext()中把eleIndex和listIndex都指向下一个可以用的值的位置,如果超过了边缘都没有可以用的,就返回false next()就把两个变量位置 阅读全文
posted @ 2016-08-11 02:25 warmland 阅读(200) 评论(0) 推荐(0)
摘要:道理上不是特别难,但是因为一边要返回计数一边又要返回是不是univalue所以需要一个helper函数。 阅读全文
posted @ 2016-08-11 01:16 warmland 阅读(138) 评论(0) 推荐(0)
摘要:呜呜做过一次,但是还是记不得了。 大概就是这样。希望能够记住!! 时间复杂度是O(n) 阅读全文
posted @ 2016-08-04 03:27 warmland 阅读(388) 评论(0) 推荐(0)