File tree 1 file changed +25
-25
lines changed
src/0918-Maximum-Sum-Circular-Subarray
1 file changed +25
-25
lines changed Original file line number Diff line number Diff line change 1
1
class Solution :
2
- def maxSubarraySumCircular (self , a ):
2
+ def maxSubarraySumCircular (self , A ):
3
3
"""
4
4
:type A: List[int]
5
5
:rtype: int
6
- """
7
- def kadane (nums ):
8
- cur , result = 0 , 0
9
- for num in nums :
10
- cur += num
11
- if cur < 0 :
12
- cur = 0
13
- if result < cur :
14
- result = cur
15
- return result
16
-
17
- max_a = max (a )
18
- if max_a < 0 :
19
- return max_a
20
-
21
- len_a = len (a )
22
- result1 = kadane (a )
23
- result2 = 0
24
- for i in range (len_a ):
25
- result2 += a [i ]
26
- a [i ] = - a [i ]
27
-
28
- result2 += kadane (a )
6
+ """
7
+ cur_max = 0
8
+ result_max = 0
29
9
30
- return max (result1 , result2 )
10
+ for num in A :
11
+ cur_max += num
12
+ if cur_max <= 0 :
13
+ cur_max = 0
14
+ if result_max < cur_max :
15
+ result_max = cur_max
16
+
17
+ if result_max == 0 :
18
+ return max (A )
19
+
20
+ cur_min = 0
21
+ result_min = 0
22
+
23
+ for num in A :
24
+ cur_min += num
25
+ if cur_min >= 0 :
26
+ cur_min = 0
27
+ if result_min > cur_min :
28
+ result_min = cur_min
29
+
30
+ return max (result_max , sum (A ) - result_min )
31
31
32
32
33
33
if __name__ == "__main__" :
You can’t perform that action at this time.
0 commit comments