题解 | #牛群的最大能量环#

牛群的最大能量环

https://www.nowcoder.com/practice/653d5a6041a04b8cb9b082eeb1429d1c

key:

  • 既然是环,那就手动补成一个环
  • 注意“补丁1”:当r不能移动时,如何移动l有两种情况:l != r、 l < r
class Solution:
    def maxEnergyCircular(self , energy: List[int]) -> int:
        lenth = len(energy)
        if lenth == 1:
            return energy[0]

        energy = energy + energy[:-1]

        result = energy[0]
        l, r = 0, 0
        tmp = energy[0]
        
        while r < len(energy):
            if r - l + 1 == lenth:
                tmp -= energy[l]
                l += 1
                result = max(result, tmp)
                continue

            if r < len(energy) - 1 and tmp + energy[r + 1] >= 0:
                r += 1
                tmp += energy[r]
                result = max(result, tmp)

            else:
                if l < r:
                    while l < r:
                        tmp -= energy[l]
                        l += 1
                        result = max(result, tmp)
                
                # 补丁1:当r不能移动时,如何移动l有两种情况:l != r时, l < r时。
                else:
                    r += 1
                    l += 1
                    tmp = energy[r]
                    result = max(result, tmp)

            if l == len(energy) - 1 and r == len(energy) - 1:
                return result

全部评论

相关推荐

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

创作者周榜

更多
牛客网
牛客企业服务