方法一
DP。时间复杂度O(n^2)。
1 | // Runtime: 84 ms, faster than 37.27% of JavaScript online submissions for Longest Increasing Subsequence. |
方法二
类似贪心的思想。
维护局部最优解(每次都把result中比num大的最小一个数替换掉,这样后面就“有更大的机会”插入新的元素),使用二分法插入,时间复杂度O(nlogn)。
注意result并不是最优上升子序列,但是长度是和最优上升子序列一样的。
1 | // Runtime: 68 ms, faster than 74.97% of JavaScript online submissions for Longest Increasing Subsequence. |
test cases
1 | test("test1", () => { |