题解 | #牛棚安全升级#

牛棚安全升级

https://www.nowcoder.com/practice/d5a30a653ae141b989d6cbffe24c2522

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param nums int整型一维数组
# @return int整型
#
class Solution:
    def minUpgrade(self, nums: List[int]) -> int:
        # write code here
        n = len(nums)
        if n == 0:
            return 0
        if n == 1:
            return nums[0]

        dp1 = [0] * n
        dp2 = [0] * n
        dp1[0] = 0
        dp2[0] = nums[0]

        if n <= 3:
            for i in range(1, n):
                dp1[i] = max(dp1[i - 1], dp2[i - 1])
                dp2[i] = dp1[i - 1] + nums[i]
            return max(dp1[n - 1], dp2[n - 1]) -1

        for i in range(1, n):
            dp1[i] = max(dp1[i - 1], dp2[i - 1])
            dp2[i] = dp1[i - 1] + nums[i]

        return max(dp1[n - 1], dp2[n - 1])

用动态规划法来做,可能我的思路不对,仅供参考。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务