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());
}
};