Featured image of post Longest Continuous Increasing Subsequence

Longest Continuous Increasing Subsequence

674. 最长连续递增序列

分析

  1. 初始化 res = 0 表示最长递增子序列长度
  2. 用变量 i 从头开始遍历数组,每次以 i 为起点
  3. j 向右扩展,直到不满足递增条件
  4. 当前递增区间长度为 j - i,更新最大值
  5. 下次从 j 开始继续找下一段

时间复杂度

时间复杂度 O(n)

空间复杂度

空间复杂度 O(1)

C++代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class Solution
{
public:
    int findLengthOfLCIS(vector<int>& nums)
    {
        int res = 0;
        for (int i = 0; i < nums.size(); ++ i)
        {
            int j = i + 1;
            // 找到从 i 开始最长的连续递增序列
            while (j < nums.size() && nums[j - 1] < nums[j])
                ++ j;
            res = std::max(res, j - i); // 更新最大长度
            i = j - 1;                  // 跳过已经检查过的部分
        }
        return res;
    }
};
Built with Hugo
Theme Stack designed by Jimmy