总结下来dp[i] = max(dp[i], dp[j]+1)
j
∈
[
i
+
1
,
n
)
a
n
d
n
u
m
s
[
j
]
>
n
u
m
s
[
i
]
j\in[i+1, n)\ \ \ and\ \ \ nums[j] > nums[i]
j∈[i+1,n)andnums[j]>nums[i]
代码:
intlengthOfLISV2(vector<int>& nums){int size =(int) nums.size();if(size ==0)return0;int dp[size];// dp[i]表示以i开头的位置memset(dp,0,sizeof(dp));int res =0;for(int i=size-1;i>=0;i--){for(int j=i+1;j<size;j++){if(nums[i]<= nums[j]){
dp[i]=max(dp[i], dp[j]+1);
res =max(res, dp[i]);}}}return res +1;}