力扣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.贪心 + 二分

 

posted on 2025-02-17 21:46  Coder何  阅读(10)  评论(0)    收藏  举报