【二分查找】300. 最长上升子序列

题目:

 

 

解答:

 

 

 1 class Solution {
 2 public:
 3     int lengthOfLIS(vector<int>& nums) 
 4     {
 5         int n = (int)nums.size();
 6 
 7         if (n == 0) 
 8         {
 9             return 0;
10         }
11         vector<int> dp(n, 0);
12 
13         for (int i = 0; i < n; ++i) 
14         {
15             dp[i] = 1;
16             for (int j = 0; j < i; ++j) 
17             {
18                 if (nums[j] < nums[i]) 
19                 {
20                     dp[i] = max(dp[i], dp[j] + 1);
21                 }
22             }
23         }
24         return *max_element(dp.begin(), dp.end());
25     }
26 };

 

posted @ 2020-05-05 13:29  梦醒潇湘  阅读(245)  评论(0)    收藏  举报