:type A: List[int] :rtype: int
(self, A)
| 60 | """ |
| 61 | class 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 |
nothing calls this directly
no outgoing calls
no test coverage detected