Skip to content

3357. Minimize the Maximum Adjacent Element Difference

Description

You are given an array of integers nums. Some values in nums are missing and are denoted by -1.

You must choose a pair of positive integers (x, y) exactly once and replace each missing element with either x or y.

You need to minimize the maximum absolute difference between adjacent elements of nums after replacements.

Return the minimum possible difference.

 

Example 1:

Input: nums = [1,2,-1,10,8]

Output: 4

Explanation:

By choosing the pair as (6, 7), nums can be changed to [1, 2, 6, 10, 8].

The absolute differences between adjacent elements are:

  • |1 - 2| == 1
  • |2 - 6| == 4
  • |6 - 10| == 4
  • |10 - 8| == 2

Example 2:

Input: nums = [-1,-1,-1]

Output: 0

Explanation:

By choosing the pair as (4, 4), nums can be changed to [4, 4, 4].

Example 3:

Input: nums = [-1,10,-1,8]

Output: 1

Explanation:

By choosing the pair as (11, 9), nums can be changed to [11, 10, 9, 8].

 

Constraints:

  • 2 <= nums.length <= 105
  • nums[i] is either -1 or in the range [1, 109].

Solutions

Solution 1

Thinking

We replace every \(-1\) by a value in \([1,\textit{limit}]\) to minimize the maximum adjacent difference. With \(n \le 10^5\) we binary-search that maximum.

Filled neighbors give a lower bound. Gaps are runs of \(-1\) that we fill with at most two constants, and we test whether those constants can meet both ends under threshold \(d\).

A run that is too long or whose ends differ by more than \(2d\) rejects \(d\). The smallest feasible \(d\) is the answer.

1

1

1

1

Comments