题解 | #牛群的最大能量环#
牛群的最大能量环
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