Blog.

最长连续递增序列

Cover Image for 最长连续递增序列
Bernie
Bernie

674. 最长连续递增序列

leetcode 链接

思路:

动态规划

1.确定 dp 数组含义:dp[i] 表示以 nums[i] 结尾的数组的最长连续递增序列长度为 dp[i]。

2.初始化 dp 数组,dp[i] = 1。

3.确定遍历方向,从前往后遍历。

4.确定转移方程:当 nums[i] > nums[i - 1] 时,dp[i] 的值为 dp[i - 1] + 1。

5.将 dp 数组中的最大值返回即可。

typescript 解法

function findLengthOfLCIS(nums: number[]): number {
  const length: number = nums.length;
  const dp: number[] = new Array(length).fill(1);
  let res: number = 1;
  for (let i: number = 1; i < length; i++) {
    if (nums[i] > nums[i - 1]) {
      dp[i] = dp[i - 1] + 1;
    }
    if (dp[i] > res) {
      res = dp[i];
    }
  }
  return res;
}

go 解法

func findLengthOfLCIS(nums []int) int {
    // dp[i] 表示以nums[i]结尾的数组的最长连续递增序列长度为dp[i]
    length := len(nums)
    dp := make([]int, length)
    // 初始化dp数组,均为1
    for i := 0; i < length; i ++ {
        dp[i] = 1
    }
    res := 1
    // 确定遍历方向
    for i := 1; i < length; i ++ {
        // 确定转移方程:当nums[i]大于nums[i - 1]时,dp[i] 的值为dp[i - 1] + 1,否则则为1
        if nums[i] > nums[i - 1] {
            dp[i] = dp[i - 1] + 1
        }
        if dp[i] > res {
            res = dp[i]
        }
    }
    return res
}