leetcode300

動態規劃

主要思想是:dp[i]從以比它小的元素作爲結尾的子序列中找起,看看誰的子序列最長,然後nums[i]又比人家小,就接上去。

class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        int ans = 0;
        vector<int>dp(nums.size(),1);
        
        for(int i = 1;i<nums.size();i++)
        {
            int t = 0;
            for(int j = 0;j<i;j++)
            {
                if(nums[j]<nums[i] && dp[j]>t)
                {
                    t = dp[j];
                }
            }
            dp[i]+=t;
        }
        
        int Max = 0;
        for(int i = 0;i<dp.size();i++)
        {
            Max = max(Max,dp[i]);
        }
        return Max;
    }
};

 

發佈了457 篇原創文章 · 獲贊 19 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章