#3788
Medium Algorithms Maximum score of a split
Array Prefix Sum
51.5% acceptance
Feb 25, 2026
69
7
You are given an integer array nums of length n.
Choose an index i such that 0 <= i < n - 1.
For a chosen split index i:
Let prefixSum(i) be the sum of nums[0] + nums[1] + ... + nums[i].
Let suffixMin(i) be the minimum value among nums[i + 1], nums[i + 2], ..., nums[n - 1].
The score of a split at index i is defined as:
score(i) = prefixSum(i) - suffixMin(i)
Return an integer denoting the maximum score over all valid split indices.
Solution
Rust
Time O(n)
Space O(n)
impl Solution {
pub fn maximum_score(nums: Vec<i32>) -> i64 {
let n = nums.len();
// prefix sum
let mut prefix = vec![0i64; n + 1];
for i in 0..n { prefix[i + 1] = prefix[i] + nums[i] as i64; }
// suffix min
let mut suf_min = vec![0i32; n + 1];
suf_min[n] = i32::MAX;
for i in (0..n).rev() { suf_min[i] = nums[i].min(suf_min[i + 1]); }
// score(i) = prefix[i+1] - suf_min[i+1] for i in 0..n-1
(0..n - 1).map(|i| prefix[i + 1] - suf_min[i + 1] as i64).max().unwrap_or(0)
}
}