【数组】674. 最长连续递增序列

题目:

 

 

解答:

思路:滑动窗口。

每个(连续)增加的子序列是不相交的,并且每当 nums[i-1]>=nums[i] 时,每个此类子序列的边界都会出现。当它这样做时,它标志着在 nums[i] 处开始一个新的递增子序列,我们将这样的 i 存储在变量 anchor 中。
例如,如果 nums=[7,8,9,1,2,3],那么 anchor 从 0 开始(nums[anchor]=7),并再次设置为 anchor=3(nums[anchor]=1)。无论 anchor 的值如何,我们都会记录 i-anchor+1 的候选答案、子数组 nums[anchor]、nums[anchor+1]、…、nums[i] 的长度,并且我们的答案会得到适当的更新。

 1 class Solution {
 2 public:
 3     int findLengthOfLCIS(vector<int>& nums) 
 4     {
 5         int ans = 0;
 6         int anchor = 0;
 7         for (int i = 0; i < nums.size(); ++i)
 8         {
 9             if (i > 0 && nums[i-1] >= nums[i]) 
10             {
11                 anchor = i;
12             }
13             ans = std::max(ans, i - anchor + 1);
14         }
15         return ans;
16     }
17 };

 

posted @ 2020-05-04 18:27  梦醒潇湘  阅读(207)  评论(0)    收藏  举报