You are given an integer n, a 2D integer array restrictions, and an integer array diff of length n - 1. Your task is to construct a sequence of length n, denoted by a[0], a[1], ..., a[n - 1], such that it satisfies the following conditions:
a[0] is 0.i (0 <= i <= n - 2), abs(a[i] - a[i + 1]) <= diff[i].restrictions[i] = [idx, maxVal], the value at position idx in the sequence must not exceed maxVal (i.e., a[idx] <= maxVal).Your goal is to construct a valid sequence that maximizes the largest value within the sequence while satisfying all the above conditions.
Return an integer denoting the largest value present in such an optimal sequence.
Example 1:
Input: n = 10, restrictions = [[3,1],[8,1]], diff = [2,2,3,1,4,5,1,1,2]
Output: 6
Explanation:
a = [0, 2, 4, 1, 2, 6, 2, 1, 1, 3] satisfies the given constraints (a[3] <= 1 and a[8] <= 1).Example 2:
Input: n = 8, restrictions = [[3,2]], diff = [3,5,2,4,2,3,1]
Output: 12
Explanation:
a = [0, 3, 3, 2, 6, 8, 11, 12] satisfies the given constraints (a[3] <= 2).
Constraints:
2 <= n <= 1051 <= restrictions.length <= n - 1restrictions[i].length == 2restrictions[i] = [idx, maxVal]1 <= idx < n1 <= maxVal <= 106diff.length == n - 11 <= diff[i] <= 10restrictions[i][0] are unique.Problem Overview: You are given an array with rules that constrain how values in the sequence can evolve. The task is to determine the maximum value that can appear while still keeping the entire sequence valid under those constraints.
Approach 1: Brute Force Simulation (O(n^2) time, O(1) space)
The most direct strategy is to try constructing the sequence while testing every possible candidate for the maximum value. For each candidate value, simulate the sequence and verify that every constraint remains satisfied. This requires iterating across the array and adjusting neighboring values whenever a constraint is violated. Because each candidate may require a full validation pass, the overall complexity grows to O(n^2). This approach helps you understand the constraint interactions but quickly becomes too slow for large inputs.
Approach 2: Greedy Constraint Propagation (O(n) time, O(1) space)
A better strategy is to maintain the feasible range of values while scanning the array once. Instead of testing every possible value, track the maximum value that can legally appear at each position based on previously processed elements. The key greedy insight: if a constraint restricts the next value, you immediately clamp the current value to the largest valid option instead of exploring alternatives. This converts the problem into a single pass over the array where each step performs constant-time checks and updates.
During the iteration, compute the maximum allowed value using the constraints from the previous element and the current position. If the value exceeds the allowed bound, reduce it to the maximum feasible value. This greedy correction guarantees the sequence always remains valid while pushing values as high as possible. Because each element is processed exactly once, the time complexity is O(n) and the space usage stays O(1).
The greedy approach works because constraints propagate locally through the sequence. Once you determine the maximum valid value at index i, any larger value would violate the rule with its neighbors. That means the locally optimal decision also preserves the global optimum.
Problems like this often appear in interviews to test how well you reason about constraint propagation and monotonic structure in arrays. You repeatedly clamp values to the highest feasible option while preserving validity. This pattern shows up frequently in array manipulation problems and greedy optimization tasks.
Recommended for interviews: Start by describing the brute-force simulation to show you understand the constraints. Then move to the greedy single-pass solution. Interviewers expect the O(n) greedy approach because it demonstrates that you recognize how constraints propagate across an array and how local optimal decisions lead to a globally optimal maximum value.
Solutions for this problem are being prepared.
Try solving it yourself| Approach | Time | Space | When to Use |
|---|---|---|---|
| Brute Force Simulation | O(n^2) | O(1) | Useful for understanding constraints or verifying small test cases |
| Greedy Constraint Propagation | O(n) | O(1) | Best for large arrays where constraints propagate between neighbors |
Find Maximum Value in a Constrained Sequence 🔥 LeetCode 3796 | Biweekly Contest 173 | Greedy • Study Placement • 731 views views
Watch 3 more video solutions →Practice Find Maximum Value in a Constrained Sequence with our built-in code editor and test cases.
Practice on FleetCodePractice this problem
Open in Editor