随笔分类 - Lintcode
摘要:刷 July 31 2019 换成只能从左边或者右边拿。这个确实和 "Coins in a Line II" 有关系。 和上面思路一致,也是MinMax思路,只不过是从左边和右边选,相应对方也是这样。
阅读全文
摘要:最后更新 二刷 09 Jna 2017 利用线段树进行区间查找,重点还是如何判断每一层的覆盖区间,和覆盖去见与当前NODE值域的关系。 java public class Solution { public int query(SegmentTreeNode root, int start, int
阅读全文
摘要:最后更新 二刷 09 Jan 17 正儿八经线段树的应用了。 查找区间内的值。 对于某一个Node,有这样的可能: 1)需要查找区间和当前NODE没有覆盖部分,那么直接回去就行了。 2)有覆盖的部分,覆盖部分作为新的查找区间,往左右子找。 Time: O(NlgN) Space: O(lgN) fo
阅读全文
摘要:最后更新 二刷 08 Jan 2017 利用线段树来更改,找到更改的NODE,然后更改那个brach上的所有max值。 首先确定recursion的终止条件 然后通过判断大小来找方向 找到NODE之后post order来进行更改。 java public class Solution { publ
阅读全文
摘要:最后更新 08 Jan 2017 开始介绍线段树的主要作用了,可以快速在区间查找极值,我猜是这样的。。。。。 一个NODE的最大值取决于它左边和右边最大值里大 按个,所以,所以什么?对了,我们该用post order traversal来构建。
阅读全文
摘要:最后更新 一刷 还是Partition,只不过这次是按照大小写字母来。 java public class Solution { public void sortLetters(char[] chars) { //write your code here if (chars.length = max
阅读全文
摘要:最后更新 一刷 java class Solution { public void sortColors2(int[] colors, int k) { // write your code here if (colors.length
阅读全文
摘要:最后更新 一刷。 双指针夹逼。 容器的高度受限于较小的边,夹的时候底在变小,所以移动较大的边没有意义,最终高度还是小的那边;只能尝试移动小的那个边。 java public class Solution { public int maxArea(int[] heights) { // write y
阅读全文
摘要:刷 July 31 2019 这种题遇到就两腿一蹬,地上一躺。 和coins in a line I除了名字很像,没啥屌关系,如果真的作为I的follow up,就太坑了,因为根本不是FOLLOW UP,用1的思路去考虑就崩了。 dp[n]代表剩下n个硬币的时候的最大收益。 n的时候,有2种情况,可
阅读全文
摘要:最后更新 一刷。 用数学方法是看是不是3的倍数。 不用数学方法的话要动态规划。 当前玩家,dp[i]行不行取决于dp[i 1]和dp[i 2],代表下一个玩家能不能赢,另一个玩家能赢的话当前就不能赢;另一个玩家不能赢,当前就能赢。 因为当前玩家可以通过拿1个或者拿2个来左右结果。 dp[i] = !
阅读全文

浙公网安备 33010602011771号