Leetcode 674. 最长连续递增序列

题目要求:

给定一个未经排序的整数数组,找到最长且连续的的递增序列。

输入: [1,3,5,4,7]
输出: 3
解释: 最长连续递增序列是 [1,3,5], 长度为3。
尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。

代码:

class Solution {
public:
    int findLengthOfLCIS(vector<int>& nums) {
        if(nums.size() <= 1) return nums.size();
        vector<int> result(nums.size(), 1);
        for(int i = 1; i < nums.size(); i++) {
            if(nums[i] > nums[i-1]) result[i] = result[i-1] + 1;
        }
        sort(result.begin(), result.end());
        return result.back();
    }
};

题解:

采用一个数组保存每一个位置的递增子序列长度,然后对这些数字进行排序,求出最大的数。

其实还有更好的办法,不需要数组来保存子序列长度,因为只关心最长的那一个,
1,可以用一个变量_max保存最大的长度,
2,在每次连续序列被破坏时,用当前_count 与 _max比较,取最大的赋值给_max,并且重置当前的_count=1.

posted @ 2019-10-28 10:27  Howardwang  阅读(133)  评论(0编辑  收藏  举报