b_lc_任意子数组和的绝对值的最大值(记录最大最小值)
请你找出 nums 中 和的绝对值 最大的任意子数组(可能为空),并返回该 最大值。
思路:mi记录最小值,mx记录最大值;
- x>0,答案的子数组mi一定会就此断开
- x<0,答案的子数组mx一定会就此断开
- 所以无论x怎样,mi、mx都记录了所有可能,不必关心x的正负,只需考虑mi、mx的正负即可
class Solution:
def maxAbsoluteSum(self, A: List[int]) -> int:
mi, mx, ans = 0, 0, -float('inf')
for x in A:
if mi >= 0: mi = x
else: mi += x
if mx <= 0: mx = x
else: mx += x
ans = max(ans, mx, abs(mi))
return ans