MCPcopy Create free account
hub / github.com/HuberTRoy/leetCode / maxSubarraySumCircular

Method maxSubarraySumCircular

Array/MaximumSumCircularSubarray.py:62–97  ·  view source on GitHub ↗

:type A: List[int] :rtype: int

(self, A)

Source from the content-addressed store, hash-verified

60"""
61class Solution(object):
62 def maxSubarraySumCircular(self, A):
63 """
64 :type A: List[int]
65 :rtype: int
66 """
67
68 dp = [A[0]]
69 maxes = A[0]
70
71 for i in range(1, len(A)):
72 if A[i] + dp[i-1] > 0:
73 maxes = max(maxes, A[i]+dp[i-1], A[i])
74 dp.append(max(A[i]+dp[i-1], A[i]))
75 else:
76 dp.append(A[i])
77 maxes = max(maxes, A[i])
78
79 if maxes < 0:
80 return maxes
81
82 dp = [A[0]]
83
84 mines = A[0]
85
86 for i in range(1, len(A)):
87 if A[i] + dp[-1] < 0:
88 mines = min(mines, A[i]+dp[-1], A[i])
89 dp.append(min(A[i]+dp[-1], A[i]))
90 else:
91 dp.append(A[i])
92 mines = min(mines, A[i])
93
94
95 maxes = max(maxes, sum(A) - mines)
96
97 return maxes

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected