Skip to content

Commit ee1fb0e

Browse files
authored
Create ways-to-split-array-into-three-subarrays.py
1 parent 870c05d commit ee1fb0e

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Time: O(n)
2+
# Space: O(n)
3+
4+
class Solution(object):
5+
def waysToSplit(self, nums):
6+
"""
7+
:type nums: List[int]
8+
:rtype: int
9+
"""
10+
MOD = 10**9+7
11+
12+
prefix = [0]
13+
for x in nums:
14+
prefix.append(prefix[-1]+x)
15+
16+
result = left = right = 0
17+
for i in xrange(len(nums)):
18+
left = max(left, i+1)
19+
while left+1 < len(nums) and prefix[i+1] > prefix[left+1]-prefix[i+1]:
20+
left += 1
21+
right = max(right, left)
22+
while right+1 < len(nums) and prefix[right+1]-prefix[i+1] <= prefix[-1]-prefix[right+1]:
23+
right += 1
24+
result = (result + (right-left))%MOD
25+
return result

0 commit comments

Comments
 (0)