动态规划 附带 视频讲解

牛牛的数列

http://www.nowcoder.com/questionTerminal/f2419f68541d499f920eac51c63d3f72

视频讲解:https://www.bilibili.com/video/BV1LN411R7i6/

class Solution:
    def maxSubArrayLength(self , nums ):
        n = len(nums)
        # 以 tail[i] 结尾的 最长连续上升子序列
        tail = [0] * n
        # 以 head[i] 开始的 最长连续上升子序列
        head = [0] * n
        tail[0] = 1
        # 最左向右 找出 连续的子序列
        for i in range(1, n):
            if nums[i] > nums[i - 1]:
                tail[i] = tail[i - 1] + 1
            else:
                tail[i] = 1
        head[n - 1] = 1
        # 从右向左 找出 连续的子系列 
        for i in range(n - 2, -1, -1):
            if nums[i + 1] > nums[i]:
                head[i] = head[i + 1] + 1
            else:
                head[i] = 1
        # 最终结果
        res = 1
        for i in range(1, n - 1):
            # 更新 最大的结果
            res = max(tail[i], head[i], res)
            # 填充 需要 弥补的
            if nums[i + 1] - nums[i - 1] >= 2:
                res = max(res, head[i + 1] + tail[i - 1] + 1)
        return res
全部评论
res = max(tail[i], head[i], res)少了加一
点赞 回复 分享
发布于 2021-06-05 04:54

相关推荐

伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
点赞 2 评论
分享
牛客网
牛客企业服务