Leetcode 300. Longest Increasing Subsequence

Longest Increasing Subsequence

Longest Increasing Subsequence :

給定一個無序的整數數組,求最長遞增子序列的長度

Python

動態規劃 :

class Solution:
    def lengthOfLIS(self, nums: List[int]) -> int:
        dp=[0]*len(nums)
        dp[0]=1
        for i in range(1,len(nums)):
            xmax=1
            for j in range(0,i):            
                if nums[i]>nums[j]:         #下一個數大於之前的,取最大值
                    xmax=max(xmax,dp[j]+1)  
            dp[i]=xmax                      #i,j
        return max(dp)

C++

class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        const int N = nums.size();
        if (N == 0) return 0;
        vector<int> dp(N, 1);
        for (int i = 1; i < N; ++i) {
            for (int j = i - 1; j >= 0; --j) {
                if (nums[j] < nums[i]) {
                    dp[i] = max(dp[i], dp[j] + 1);
                }
            }
        }
        return *max_element(dp.begin(), dp.end());
    }
};