2270. Number of Ways to Split Array

Not sure how this is a Medium problem, but here goes. Array of integers, we want to find all valid splits, being that the sum of array[0:i] is greater than or equal to array[i:n-1]. We do this by maintaining a running total valid splits, a sum for the left side of the array, and a sum for the entire array.

We iterate through the array until n-1, adding the value of the current element of the array to the left-hand total. We subtract the value of the left-hand total from the total sum of the array, and if the left-hand total is greater than or equal to this difference, we have found a valid split.

The solution is as follows:

class Solution:
    def waysToSplitArray(self, nums: List[int]) -> int:
        ans = left = 0
        total = sum(nums)
 
        for i in range(len(nums) - 1):
            left += nums[i]
            right = total - left
            if left >= right:
                ans += 1
 
        return ans

_ Time Complexity:

O(n) - We traverse the array once.

_ Space Complexity:

O(1) - We use constant space to store our answer.