最长上升子序列
Posted Alice_yufeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长上升子序列相关的知识,希望对你有一定的参考价值。
class Solution
public int lengthOfLIS(int[] nums)
int len = 1, n = nums.length;
if (n == 0)
return 0;
int[] d = new int[n + 1];
d[len] = nums[0];
for (int i = 1; i < n; ++i)
if (nums[i] > d[len])
d[++len] = nums[i];
else
int l = 1, r = len, pos = 0; // 如果找不到说明所有的数都比 nums[i] 大,此时要更新 d[1],所以这里将 pos 设为 0
while (l <= r)
int mid = (l + r) >> 1;
if (d[mid] < nums[i])
pos = mid;
l = mid + 1;
else
r = mid - 1;
d[pos + 1] = nums[i];
return len;
以上是关于最长上升子序列的主要内容,如果未能解决你的问题,请参考以下文章