題目:
給定一個整數陣列 nums
,找出其中最長嚴格遞增子序列的長度。
範例:
Input: nums = [10,9,2,5,3,7,101,18]
Output: 4
Explanation: 最長的嚴格遞增子序列是 [2,3,7,101],因此長度為 4。
Input: nums = [0,1,0,3,2,3]
Output: 4
Input: nums = [7,7,7,7,7,7,7]
Output: 1
限制條件:
實作:
class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
if (nums.empty()) return 0;
int n = nums.size();
vector<int> dp(n, 1); // 每個位置最長子序列長度初始化為1
int maxLength = 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);
}
}
maxLength = max(maxLength, dp[i]);
}
return maxLength;
}
};
參考:
#300. Longest Increasing Subsequence