2270. Number of Ways to Split Array  

Intuition

A simple mathmatic relationship is that

\[total\_sum = left\_sum + right\_sum\]

Approach

  • Initialize right_sum as total_sum, i.e, the sum of all elements in nums. Initialize left_sum as 0. Initialize res as 0 to represent the answer.
  • Iterate through nums from 0 to n - 1.
    • At index i, subtract nums[i] from left_sum, and add nums[i] to right_sum.
    • Check if left_sum and right_sum satisfy the requirement, and update res accordingly.

Code

  • class Solution:
        def waysToSplitArray(self, nums: List[int]) -> int:
            left_sum = 0
            right_sum = sum(nums)
            res = 0
            for x in nums[:-1]:
                left_sum += x
                right_sum -= x
                if left_sum >= right_sum:
                    res += 1
            return res
    
  • class Solution {
    public:
        int waysToSplitArray(vector<int>& nums) {
            long right_sum = 0, left_sum = 0;
            for (int x : nums) {
                right_sum += x;
            }
            int res = 0;
            for (int i = 0; i < nums.size() - 1; i++) {
                left_sum += nums[i];
                right_sum -= nums[i];
                if (left_sum >= right_sum) {
                    res++;
                }
            }
            return res;
        }
    };
    

Complexity

  • Time complexity: $O(N)$
  • Space complexity: $O(1)$