-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path112.py
More file actions
30 lines (26 loc) · 1.09 KB
/
112.py
File metadata and controls
30 lines (26 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution:
def maxAbsoluteSum(self, nums: List[int]):
min_prefix_sum = float("inf")
max_prefix_sum = float("-inf")
prefix_sum = 0
max_abs_sum = 0
for num in nums:
# Prefix sum from index 0 to i
prefix_sum += num
# Minimum & Maximum prefix sum we have seen so far
min_prefix_sum = min(min_prefix_sum, prefix_sum)
max_prefix_sum = max(max_prefix_sum, prefix_sum)
if prefix_sum >= 0:
# If the prefix_sum is positive, we will get the difference
# between prefix_sum & min_prefix_sum
max_abs_sum = max(
max_abs_sum, max(prefix_sum, prefix_sum - min_prefix_sum)
)
else:
# If the prefix_sum is negative, we will get the absolute difference
# between prefix_sum & max_prefix_sum
max_abs_sum = max(
max_abs_sum,
max(abs(prefix_sum), abs(prefix_sum - max_prefix_sum)),
)
return max_abs_sum