上升子序列
找到第一个比x大的,更新那个值,记录更小的tail Reference: (Leetcode 300)(https://leetcode.com/problems/longest-increasing-subsequence/discuss/74824/JavaPython-Binary-search-O(nlogn)-time-with-explanation)
This commit is contained in:
parent
e89b0aab31
commit
5eaf1daec1
|
@ -2781,7 +2781,7 @@ return ret;
|
||||||
定义一个 tails 数组,其中 tails[i] 存储长度为 i + 1 的最长递增子序列的最后一个元素。对于一个元素 x,
|
定义一个 tails 数组,其中 tails[i] 存储长度为 i + 1 的最长递增子序列的最后一个元素。对于一个元素 x,
|
||||||
|
|
||||||
- 如果它大于 tails 数组所有的值,那么把它添加到 tails 后面,表示最长递增子序列长度加 1;
|
- 如果它大于 tails 数组所有的值,那么把它添加到 tails 后面,表示最长递增子序列长度加 1;
|
||||||
- 如果 tails[i-1] < x <= tails[i],那么更新 tails[i-1] = x。
|
- 如果 tails[i-1] < x <= tails[i],那么更新 tails[i] = x。
|
||||||
|
|
||||||
例如对于数组 [4,3,6,5],有:
|
例如对于数组 [4,3,6,5],有:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user