摘要: 这个结构是里面一个double linked list和map, 把key&DLinkedListNode对应起来,不用重头搜 稍微长一点的代买就发现自己错误百出: 1.看清楚return的类型,get方法return的是int,不要返回node 2.函数名变量名搞清楚 值得注意的是LRU的cons 阅读全文
posted @ 2016-08-11 09:21 warmland 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 一,正常的方法 二,特殊方法 阅读全文
posted @ 2016-08-11 08:25 warmland 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 还是有bug,因为需要注意处理根节点,如果每往下走一点就增加"->x"的话,返回的结果会是“->a->b->c” 试着开始就左右分开走,但是因为如果左右节点都为空的根节点又需要单独处理很麻烦,所以每次就是添加到List<Stirng>res里面的时候把头上的"->"切掉 阅读全文
posted @ 2016-08-11 08:01 warmland 阅读(110) 评论(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 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 就是backtracking 要注意的是 helper函数需要有一个int start记录开始的点,不然比如说分解12的时候会有重复,[2,2,3],[3,2,2]会变成两组加进去,所以每次分解的时候不能比上一次的factor大 阅读全文
posted @ 2016-08-11 04:54 warmland 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 一. 正常的方法, PriorityQueue 1.先把intervals按照开始的时间排序 2. 建一个PriorityQueue,按照结束的时间排序,这样每次poll()出来的都是最早结束的那个会议,开始先把第一个开始的会议放进去 3. 对于每一个intervals,即下一个开始的会议 earl 阅读全文
posted @ 2016-08-11 04:10 warmland 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 把intervals建成一个arrayList然后重新写一个自己的comparator,对intervals排序,按照开始时间排序,如果开始时间是一样的,就按照结束时间排序 最后对所有的interval都检查一遍,如果前一个的结束时间在这一个的开始之后,那就返回false.如果检查完了也没有问题,那 阅读全文
posted @ 2016-08-11 02:39 warmland 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 1. 用普通方法做,不用iterator. 要设置两个变量,一个指向目前遍历到的list的位置,一个指向目前的list里面元素的位置。 hasNext()中把eleIndex和listIndex都指向下一个可以用的值的位置,如果超过了边缘都没有可以用的,就返回false next()就把两个变量位置 阅读全文
posted @ 2016-08-11 02:25 warmland 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 道理上不是特别难,但是因为一边要返回计数一边又要返回是不是univalue所以需要一个helper函数。 阅读全文
posted @ 2016-08-11 01:16 warmland 阅读(134) 评论(0) 推荐(0) 编辑