摘要: 300. Longest Increasing Subsequence brute force做的话,递归来做,每个元素在不在subsequence中,时间复杂度O(2^n) 方法一:DP 由于只需要求个数,不需要把subsequence求出来,很自然想到dp dp[i] 表示以 a[i] 为结尾的 阅读全文
posted @ 2018-08-31 05:14 約束の空 阅读(164) 评论(0) 推荐(0)
摘要: 排序题的变种,对于a和b,如果a+b>b+a,那么a排在b前面。 复习一下 sort 函数,如果cmp写在里面的写法:[](int a, int b){return a>b;} 阅读全文
posted @ 2018-08-31 04:50 約束の空 阅读(83) 评论(0) 推荐(0)
摘要: 方法一:Divide and Conquer 数组第一个一定是根,第一个大于根的一定是右子树的根,因此我们可以把 根,左右子树都区分开来。判断根是否在合理范围内,如果在,在分别判断左右子树。思路清晰,也很容易写。 Time: O(nlogn) 方法二:Stack 维护一个单调递减的栈。如果当前元素比 阅读全文
posted @ 2018-08-31 03:25 約束の空 阅读(122) 评论(0) 推荐(0)
摘要: 方法一:Brute Force 对于每个节点,计算以该节点为root时所有可能的个数。 Space: O(h), O(logn)~O(n) Time: calpath O(n), 对于dfs, T(n) = 2T(n/2)+O(n) 所以总的时间复杂度O(nlogn),当然这是在balanced t 阅读全文
posted @ 2018-08-31 02:06 約束の空 阅读(164) 评论(0) 推荐(0)