Skip to main content
Back to problems
#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)
LeetCode
solution.rs
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)
  }
}