# 03.01.2025 [2270. Number of Ways to Split Array]
Count splits left_sum >= right_sum #medium #prefix_sum
03.01.2025
2270. Number of Ways to Split Array medium blog post substack youtube deep-dive
Join me on Telegram
Problem TLDR
Count splits left_sum >= right_sum #medium #prefix_sum
Intuition
Prefix sum can help solve this.
Approach
careful with an
int
overflowthis is not about the balance and con't be done in a single pass, as adding negative number decreases the sum, we should hold
left
andright
part separately
Complexity
Time complexity: $$O(n)$$
Space complexity: $$O(1)$$
Code
fun waysToSplitArray(nums: IntArray): Int {
var r = nums.sumOf { it.toLong() }; var l = 0L
return (0..<nums.lastIndex).count {
l += nums[it]; r -= nums[it]; l >= r
}
}
pub fn ways_to_split_array(nums: Vec<i32>) -> i32 {
let (mut l, mut r) = (0, nums.iter().map(|&x| x as i64).sum());
(0..nums.len() - 1).filter(|&i| {
l += nums[i] as i64; r -= nums[i] as i64; l >= r
}).count() as _
}
int waysToSplitArray(vector<int>& nums) {
int res = 0; long long r = reduce(begin(nums), end(nums), 0LL), l = 0;
for (int i = 0; i < nums.size() - 1; ++i)
res += (l += nums[i]) >= (r -= nums[i]);
return res;
}