Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution:
- def maxSubarraySumCircular(self, A: List[int]) -> int:
- n = len(A)
- max_cur = A[0]
- max_total = max_cur
- for i in range(1,n):
- max_cur = max(max_cur + A[i], A[i])
- max_total = max(max_total, max_cur)
- pref = [A[0]]*n
- sum_pref = A[0]
- suf = [A[n-1]]*n
- sum_suf = A[n-1]
- for i in range(1,n):
- sum_pref += A[i]
- pref[i] = max(pref[i-1], sum_pref)
- sum_suf += A[n-1-i]
- suf[n-1-i] = max(suf[n-i], sum_suf)
- for i in range(1,n):
- if pref[i-1]+suf[i] > max_total:
- max_total = pref[i-1]+suf[i]
- return max_total
Advertisement
Add Comment
Please, Sign In to add comment