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
posted @ 2021-02-15 20:36  童年の波鞋  阅读(46)  评论(0编辑  收藏  举报