Skip to main content

Find Maximum Value in a Constrained Sequence - Solution & Explanation

MediumArrayGreedy4 min readAsked at: Amazon, Samsung
Practice this problem

Problem Statement

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.
  • All elements in the sequence are non-negative.
  • For every index i (0 <= i <= n - 2), abs(a[i] - a[i + 1]) <= diff[i].
  • For each 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:

  • The sequence a = [0, 2, 4, 1, 2, 6, 2, 1, 1, 3] satisfies the given constraints (a[3] <= 1 and a[8] <= 1).
  • The maximum value in the sequence is 6.

Example 2:

Input: n = 8, restrictions = [[3,2]], diff = [3,5,2,4,2,3,1]

Output: 12

Explanation:

  • The sequence a = [0, 3, 3, 2, 6, 8, 11, 12] satisfies the given constraints (a[3] <= 2).
  • The maximum value in the sequence is 12.

 

Constraints:

  • 2 <= n <= 105
  • 1 <= restrictions.length <= n - 1
  • restrictions[i].length == 2
  • restrictions[i] = [idx, maxVal]
  • 1 <= idx < n
  • 1 <= maxVal <= 106
  • diff.length == n - 1
  • 1 <= diff[i] <= 10
  • The values of restrictions[i][0] are unique.

Approach Overview

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

Detailed Complexity Analysis

ApproachTimeSpaceWhen to Use
Brute Force SimulationO(n^2)O(1)Useful for understanding constraints or verifying small test cases
Greedy Constraint PropagationO(n)O(1)Best for large arrays where constraints propagate between neighbors

Video Solution

Find Maximum Value in a Constrained Sequence 🔥 LeetCode 3796 | Biweekly Contest 173 | Greedy • Study Placement • 905 views views

Watch 3 more video solutions →

Frequently Asked Questions

Is Find Maximum Value in a Constrained Sequence easy or hard?
The problem is typically rated Medium because the implementation is simple once the greedy insight is clear. The challenge lies in recognizing that local constraint adjustments guarantee the global maximum value for the sequence.
Find Maximum Value in a Constrained Sequence Python/Java solution
Most implementations use a simple loop over the array. Track the current maximum feasible value, update it based on the constraint rules, and clamp values when necessary. The same greedy logic translates directly to Python, Java, C++, and Go with identical O(n) time complexity.
How to solve Find Maximum Value in a Constrained Sequence in O(n)?
Use a greedy single-pass scan. While iterating through the array, compute the maximum value allowed at the current position based on the constraints from previous elements. If a value exceeds the allowed bound, clamp it to the highest valid value. This local adjustment keeps the sequence valid and guarantees the global maximum without backtracking.
What is the best approach for Find Maximum Value in a Constrained Sequence?
The greedy constraint propagation approach is the most efficient. Iterate through the array while maintaining the maximum feasible value at each index according to the sequence rules. This ensures the sequence always stays valid while maximizing the value. The algorithm runs in O(n) time and uses O(1) extra space.
Is Find Maximum Value in a Constrained Sequence asked at Google/Amazon/Meta?
Greedy array constraint problems are common in interviews at companies like Google, Amazon, and Meta. Variations appear in questions involving sequence feasibility, bounded growth, or neighbor constraints where you must propagate limits through an array efficiently.
What data structure is used in Find Maximum Value in a Constrained Sequence?
The solution primarily uses arrays and simple variables to track bounds while scanning the sequence. No advanced data structures are required because the greedy approach relies on sequential constraint updates.
What is the time complexity of Find Maximum Value in a Constrained Sequence?
The optimal solution runs in O(n) time because the array is scanned once and each element is processed with constant-time constraint checks. Space complexity is O(1) since only a few variables are used to track the current allowable value range.

Ready to solve this problem?

Practice Find Maximum Value in a Constrained Sequence with our built-in code editor and test cases.

Practice on FleetCode