#3698
Split Array With Minimum Difference
MediumArrayPrefix SumPrefix SumTwo Pointers
Approaches
Brute ForceOptimal
Complexity Comparison
| Brute Force | Optimal Solution★ | |
|---|---|---|
| Time | O(n²) | O(n) |
| Space | O(1) | O(n) |
💡
Intuition
Time O(n)Space O(n)
Use prefix and suffix arrays to track increasing and decreasing sequences, allowing efficient validation of splits.
⚙️
Algorithm
3 steps- 1Step 1: Create a boolean array 'inc' to track if nums[0..i] is strictly increasing.
- 2Step 2: Create a boolean array 'dec' to track if nums[i..n-1] is strictly decreasing.
- 3Step 3: Iterate through split points, calculate sums, and find the minimum absolute difference for valid splits.
solution.py16 lines
1def minAbsDifference(nums):
2 n = len(nums)
3 inc = [True] * n
4 dec = [True] * n
5 for i in range(1, n):
6 inc[i] = inc[i-1] and nums[i] > nums[i-1]
7 for i in range(n-2, -1, -1):
8 dec[i] = dec[i+1] and nums[i] > nums[i+1]
9 min_diff = float('inf')
10 left_sum = 0
11 for i in range(n - 1):
12 left_sum += nums[i]
13 if inc[i] and dec[i + 1]:
14 right_sum = sum(nums[i + 1:])
15 min_diff = min(min_diff, abs(left_sum - right_sum))
16 return min_diff if min_diff != float('inf') else -1ℹ
Complexity note: The optimal solution runs in linear time due to the single pass for prefix and suffix arrays, making it efficient.
- 1Strictly increasing and decreasing conditions are crucial.
- 2Using prefix and suffix arrays allows efficient validation.
Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.