力扣300 最长递增子序列

1.动态规划,时间复杂度O(n^2)
1 class Solution { 2 public: 3 vector<int> dp; //表示以dp[i]表示以i结尾的最长子序列长度 4 int lengthOfLIS(vector<int>& nums) { 5 dp.resize(nums.size(), 1); 6 int result = 1; 7 for (int i = 1; i < nums.size(); ++i) { 8 for (int j = 0; j < i; ++j) { //寻找j∈[0,i)中满足nums[i] > nums[j]的最大dp[j] 9 if (nums[i] > nums[j]) { 10 dp[i] = max(dp[i], dp[j] + 1); 11 } 12 } 13 result = max(dp[i], result); 14 } 15 return result; 16 } 17 };
2.贪心 + 二分
浙公网安备 33010602011771号