給定一個無序的整數數組,找到其中最長上升子序列的長度。
示例:
輸入: [10,9,2,5,3,7,101,18]
輸出: 4?
解釋: 最長的上升子序列是?[2,3,7,101],它的長度是 4。
說明:可能會有多種最長上升子序列的組合,你只需要輸出對應的長度即可。
你算法的時間復雜度應該為?O(n2) 。
進階: 你能將算法的時間復雜度降低到?O(n log n) 嗎?來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/longest-increasing-subsequence
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
解法一:
class Solution {
public:int lengthOfLIS(vector<int>& nums) {if(nums.size() == 0) return 0;int len = nums.size();int dp[len];dp[0] = 1;int ma = 1, res = 1;for(int i = 1; i < len; ++i){ma = 1;for(int j = 0; j < i; ++j){if(nums[i] > nums[j]){ma = max(ma, dp[j] + 1);}}res = max(res, ma);dp[i] = ma;} return res;}
};
解法二:
?