当前位置:   article > 正文

leetcode674 最长连续递增序列_leetcode 674.最长连续递增序列

leetcode 674.最长连续递增序列
题目

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

连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。

示例

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

解析

注意,不连续的不算递增
本题和上一题的主要区别就是 连续且递增,上一题不要求连续,这样的话就不需要内层再起一个循环来判断每一个和nums[i]的大小了(只需要比较上一个)
另外,这道题还是需要有个临时变量来存一下最大值,因为dp只是求了i时的最大值

func findLengthOfLCIS(nums []int) int {
    dp := make([]int, len(nums)+1)
    for i := 0; i < len(nums); i++ {
        dp[i] = 1
    }
    res := dp[0]
    for i := 1; i < len(nums); i++ { // 这里是从1开始的,因为下面要比较-1的情况,上一道题由于有内层循环,不需要-1
        if nums[i] > nums[i-1] {
            dp[i] = dp[i-1]+1
        }
        if res < dp[i] {
            res = dp[i]
        }
    }
    return res
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/85000
推荐阅读
相关标签
  

闽ICP备14008679号