Post

2720 Minimize The Maximum Difference Of Pairs

2720 Minimize The Maximum Difference Of Pairs

Minimize the Maximum Difference of Pairs image

You are given a 0-indexed integer array nums and an integer p. Find p pairs of indices of nums such that the maximum difference amongst all the pairs is minimized. Also, ensure no index appears more than once amongst the p pairs.

Note that for a pair of elements at the index i and j, the difference of this pair isnums[i] - nums[j], wherexrepresents the absolute value of x.

Return the minimum maximum difference among all *p *pairs. We define the maximum of an empty set to be zero.

 

Example 1:

1
2
3
4
5
6
**Input:** nums = [10,1,2,7,1,3], p = 2
**Output:** 1
**Explanation:** The first pair is formed from the indices 1 and 4, and the second pair is formed from the indices 2 and 5. 
The maximum difference is max(|nums[1] - nums[4]|, |nums[2] - nums[5]|) = max(0, 1) = 1. Therefore, we return 1.

Example 2:

1
2
3
4
5
**Input:** nums = [4,2,1,2], p = 1
**Output:** 0
**Explanation:** Let the indices 1 and 3 form a pair. The difference of that pair is |2 - 2| = 0, which is the minimum we can attain.

 

Constraints:

1
2
3
1 <= nums.length <= 105
0 <= nums[i] <= 109
0 <= p <= (nums.length)/2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

from typing import List
from functools import cache

class Solution:
        def minimizeMax(self, A: List[int], p: int) -> int:
            A.sort()
            n = len(A)
            left, right = 0, A[-1] - A[0]
            while left < right:
                mid = (left + right) // 2
                k = 0
                i = 1
                while i < n:
                    if A[i] - A[i - 1] <= mid:
                        k += 1
                        i += 1
                    i += 1
                if k >= p:
                    right = mid
                else:
                    left = mid + 1
            return left



This post is licensed under CC BY 4.0 by the author.