3788. Maximum Score of a Split
Description
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 ofnums[0] + nums[1] + ... + nums[i]. - Let
suffixMin(i)be the minimum value amongnums[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.
Example 1:
Input: nums = [10,-1,3,-4,-5]
Output: 17
Explanation:
The optimal split is at i = 2, score(2) = prefixSum(2) - suffixMin(2) = (10 + (-1) + 3) - (-5) = 17.
Example 2:
Input: nums = [-7,-5,3]
Output: -2
Explanation:
The optimal split is at i = 0, score(0) = prefixSum(0) - suffixMin(0) = (-7) - (-5) = -2.
Example 3:
Input: nums = [1,1]
Output: 0
Explanation:
The only valid split is at i = 0, score(0) = prefixSum(0) - suffixMin(0) = 1 - 1 = 0.
Constraints:
2 <= nums.length <= 105-109βββββββ <= nums[i] <= 109
Solutions
Solution 1: Prefix Sum + Enumeration
We first define an array \(\textit{suf}\) of length \(n\), where \(\textit{suf}[i]\) represents the minimum value of the array \(\textit{nums}\) from index \(i\) to index \(n - 1\). We can traverse the array \(\textit{nums}\) from back to front to compute the array \(\textit{suf}\).
Next, we define a variable \(\textit{pre}\) to represent the prefix sum of the array \(\textit{nums}\). We traverse the first \(n - 1\) elements of the array \(\textit{nums}\). For each index \(i\), we add \(\textit{nums}[i]\) to \(\textit{pre}\) and calculate the split score \(\textit{score}(i) = \textit{pre} - \textit{suf}[i + 1]\). We use a variable \(\textit{ans}\) to maintain the maximum value among all split scores.
The time complexity is \(O(n)\), and the space complexity is \(O(n)\). Here, \(n\) is the length of the array \(\textit{nums}\).
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |