3658. Minimize the Maximum Adjacent Element Difference

Hard
Array
Binary Search
Greedy

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].

Hints

Hint 1
More than 2 occurrences of -1 can be ignored.
Hint 2
We can add the first positive number to the beginning and the last positive number to the end so that any consecutive of -1s are surrounded by positive numbers.
Hint 3
Suppose the answer is <code>d</code>, it can be proved that for the optimal case we'll replace -1s with values <code>0 < x <= y</code> and it's always optimal to select <code>x = min(a) + d</code>. So we only need to select <code>y</code>.
Hint 4
Binary search on <code>d</code>.

Statistics

Acceptance
19.2%
Submissions
17,883
Accepted
3,433