2270. Number of Ways to Split Array
Intuition
A simple mathmatic relationship is that
\[total\_sum = left\_sum + right\_sum\]Approach
- Initialize
right_sum
astotal_sum
, i.e, the sum of all elements innums
. Initializeleft_sum
as0
. Initializeres
as0
to represent the answer. - Iterate through
nums
from0
ton - 1
.- At index
i
, subtractnums[i]
fromleft_sum
, and addnums[i]
toright_sum
. - Check if
left_sum
andright_sum
satisfy the requirement, and updateres
accordingly.
- At index
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)$