300. 最长上升子序列

2021-04-09  本文已影响0人  乘瓠散人

题目:给定一个整数数组,求其中最长的严格递增子序列的长度。
注意子序列和子串的区别:

int lengthOfLIS(vector<int>& nums){
    int n = nums.size();
    if(n==0) return 0;

    int dp[n]; // dp[i]表示以第i个数字结尾的最长上升子序列的长度
    dp[0]=1;
    int res = 1;
    for(int i=1; i<n; i++){
        dp[i]=1;
        for(int j=0; j<i; j++){
            if(nums[j]<nums[i]){
                dp[i] = max(dp[i], dp[j]+1);
            }
        }
        if(dp[i]>res) res=dp[i];
    }
    return res;
}
上一篇 下一篇

猜你喜欢

热点阅读