Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/2270.html
2270. Number of Ways to Split Array
 Difficulty: Medium.
 Related Topics: Array, Prefix Sum.
 Similar Questions: Split Array Largest Sum, Find Pivot Index, Ways to Split Array Into Three Subarrays, Find the Middle Index in Array, Partition Array Into Two Arrays to Minimize Sum Difference, Minimum Average Difference.
Problem
You are given a 0indexed integer array nums
of length n
.
nums
contains a valid split at index i
if the following are true:

The sum of the first
i + 1
elements is greater than or equal to the sum of the lastn  i  1
elements. 
There is at least one element to the right of
i
. That is,0 <= i < n  1
.
Return the number of **valid splits in** nums
.
Example 1:
Input: nums = [10,4,8,7]
Output: 2
Explanation:
There are three ways of splitting nums into two nonempty parts:
 Split nums at index 0. Then, the first part is [10], and its sum is 10. The second part is [4,8,7], and its sum is 3. Since 10 >= 3, i = 0 is a valid split.
 Split nums at index 1. Then, the first part is [10,4], and its sum is 14. The second part is [8,7], and its sum is 1. Since 14 >= 1, i = 1 is a valid split.
 Split nums at index 2. Then, the first part is [10,4,8], and its sum is 6. The second part is [7], and its sum is 7. Since 6 < 7, i = 2 is not a valid split.
Thus, the number of valid splits in nums is 2.
Example 2:
Input: nums = [2,3,1,0]
Output: 2
Explanation:
There are two valid splits in nums:
 Split nums at index 1. Then, the first part is [2,3], and its sum is 5. The second part is [1,0], and its sum is 1. Since 5 >= 1, i = 1 is a valid split.
 Split nums at index 2. Then, the first part is [2,3,1], and its sum is 6. The second part is [0], and its sum is 0. Since 6 >= 0, i = 2 is a valid split.
Constraints:

2 <= nums.length <= 105

105 <= nums[i] <= 105
Solution (Java, C++, Python)

class Solution { public int waysToSplitArray(int[] nums) { long leftSum = 0; long rightSum = 0; for (int i : nums) { rightSum += i; } int count = 0; for (int i = 0; i < nums.length  1; i++) { rightSum = nums[i]; leftSum += nums[i]; if (leftSum >= rightSum) { count++; } } return count; } } ############ class Solution { public int waysToSplitArray(int[] nums) { long s = 0; for (int v : nums) { s += v; } int ans = 0; long t = 0; for (int i = 0; i < nums.length  1; ++i) { t += nums[i]; if (t >= s  t) { ++ans; } } return ans; } }

class Solution: def waysToSplitArray(self, nums: List[int]) > int: s = sum(nums) ans = t = 0 for v in nums[:1]: t += v if t >= s  t: ans += 1 return ans ############ # 2270. Number of Ways to Split Array # https://leetcode.com/problems/numberofwaystosplitarray/ class Solution: def waysToSplitArray(self, nums: List[int]) > int: prefix = [0] + list(accumulate(nums)) total = sum(nums) n = len(nums) res = 0 for i in range(n  1): left = prefix[i + 1] right = prefix[1]  prefix[i + 1] if left >= right: res += 1 return res

class Solution { public: int waysToSplitArray(vector<int>& nums) { long long s = accumulate(nums.begin(), nums.end(), 0ll); long long t = 0; int ans = 0; for (int i = 0; i < nums.size()  1; ++i) { t += nums[i]; ans += t >= s  t; } return ans; } };

func waysToSplitArray(nums []int) int { s := 0 for _, v := range nums { s += v } ans, t := 0, 0 for _, v := range nums[:len(nums)1] { t += v if t >= st { ans++ } } return ans }
Explain:
nope.
Complexity:
 Time complexity : O(n).
 Space complexity : O(n).