First knowledge you need to know to do this problem is that, to quickly calculate the sub of a sub-array nums[i:j] for every different i and j, you can use another array where sum_nums[i] = sum(nums[:i]). And then, sum(nums[i:j]) = sum_nums[j] - sum_nums[i].
With this knowledge, everything because so simple. For this problem, you need to get the difference between the biggest and smallest value of sum_nums.
Further more, we don't need to store the whole sum_nums. Instead, we only need to store the biggest and the smallest value.
class Solution: def maxAbsoluteSum(self, nums): s = 0 big = 0 small = 0 max_abs = 0 for num in nums: s += num small = min(s, small) big = max(s, big) max_abs = max( max_abs, abs(big - s), abs(small - s) ) return max_abs