lintcode-最长上升子序列-76

给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。


样例

给出[5,4,1,2,3],这个LIS是[1,2,3],返回 3

给出[4,2,4,5,3,7],这个LIS是[4,4,5,7],返回 4

挑战

要求时间复杂度为O(n^2) 或者O(nlogn)

class Solution {
public:
   
    int longestIncreasingSubsequence(vector<int> nums) {
        int n=nums.size();
        int dp[n],maxp=0;
        for(int i=0;i<n;++i)
            dp[i]=1;
        for(int i=1;i<n;++i)
            for(int j=0;j<i;++j){
                if(nums[i]>=nums[j]){
                    dp[i]=max(dp[i],dp[j]+1);
                }
                maxp=max(dp[i],maxp);
            }
        return  maxp;   
    }
};


你可能感兴趣的:(lintcode-最长上升子序列-76)