Skip to content

Commit 6cf042d

Browse files
authored
feat: add solutions to lc problem: No.2616 (#4489)
No.2616.Minimize the Maximum Difference of Pairs
1 parent 80d9354 commit 6cf042d

File tree

5 files changed

+321
-0
lines changed

5 files changed

+321
-0
lines changed

solution/2600-2699/2616.Minimize the Maximum Difference of Pairs/README.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,118 @@ impl Solution {
243243
}
244244
```
245245

246+
#### C#
247+
248+
```cs
249+
public class Solution {
250+
public int MinimizeMax(int[] nums, int p) {
251+
Array.Sort(nums);
252+
int n = nums.Length;
253+
int l = 0, r = nums[n - 1] - nums[0] + 1;
254+
255+
bool check(int diff) {
256+
int cnt = 0;
257+
for (int i = 0; i < n - 1; ++i) {
258+
if (nums[i + 1] - nums[i] <= diff) {
259+
++cnt;
260+
++i;
261+
}
262+
}
263+
return cnt >= p;
264+
}
265+
266+
while (l < r) {
267+
int mid = (l + r) >> 1;
268+
if (check(mid)) {
269+
r = mid;
270+
} else {
271+
l = mid + 1;
272+
}
273+
}
274+
275+
return l;
276+
}
277+
}
278+
```
279+
280+
#### PHP
281+
282+
```php
283+
class Solution {
284+
/**
285+
* @param Integer[] $nums
286+
* @param Integer $p
287+
* @return Integer
288+
*/
289+
function minimizeMax($nums, $p) {
290+
sort($nums);
291+
$n = count($nums);
292+
$l = 0;
293+
$r = $nums[$n - 1] - $nums[0] + 1;
294+
295+
$check = function ($diff) use ($nums, $n, $p) {
296+
$cnt = 0;
297+
for ($i = 0; $i < $n - 1; ++$i) {
298+
if ($nums[$i + 1] - $nums[$i] <= $diff) {
299+
++$cnt;
300+
++$i;
301+
}
302+
}
303+
return $cnt >= $p;
304+
};
305+
306+
while ($l < $r) {
307+
$mid = intdiv($l + $r, 2);
308+
if ($check($mid)) {
309+
$r = $mid;
310+
} else {
311+
$l = $mid + 1;
312+
}
313+
}
314+
315+
return $l;
316+
}
317+
}
318+
```
319+
320+
#### Swift
321+
322+
```swift
323+
class Solution {
324+
func minimizeMax(_ nums: [Int], _ p: Int) -> Int {
325+
var nums = nums.sorted()
326+
let n = nums.count
327+
var l = 0
328+
var r = nums[n - 1] - nums[0] + 1
329+
330+
func check(_ diff: Int) -> Bool {
331+
var cnt = 0
332+
var i = 0
333+
while i < n - 1 {
334+
if nums[i + 1] - nums[i] <= diff {
335+
cnt += 1
336+
i += 2
337+
} else {
338+
i += 1
339+
}
340+
}
341+
return cnt >= p
342+
}
343+
344+
while l < r {
345+
let mid = (l + r) >> 1
346+
if check(mid) {
347+
r = mid
348+
} else {
349+
l = mid + 1
350+
}
351+
}
352+
353+
return l
354+
}
355+
}
356+
```
357+
246358
<!-- tabs:end -->
247359

248360
<!-- solution:end -->

solution/2600-2699/2616.Minimize the Maximum Difference of Pairs/README_EN.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,118 @@ impl Solution {
241241
}
242242
```
243243

244+
#### C#
245+
246+
```cs
247+
public class Solution {
248+
public int MinimizeMax(int[] nums, int p) {
249+
Array.Sort(nums);
250+
int n = nums.Length;
251+
int l = 0, r = nums[n - 1] - nums[0] + 1;
252+
253+
bool check(int diff) {
254+
int cnt = 0;
255+
for (int i = 0; i < n - 1; ++i) {
256+
if (nums[i + 1] - nums[i] <= diff) {
257+
++cnt;
258+
++i;
259+
}
260+
}
261+
return cnt >= p;
262+
}
263+
264+
while (l < r) {
265+
int mid = (l + r) >> 1;
266+
if (check(mid)) {
267+
r = mid;
268+
} else {
269+
l = mid + 1;
270+
}
271+
}
272+
273+
return l;
274+
}
275+
}
276+
```
277+
278+
#### PHP
279+
280+
```php
281+
class Solution {
282+
/**
283+
* @param Integer[] $nums
284+
* @param Integer $p
285+
* @return Integer
286+
*/
287+
function minimizeMax($nums, $p) {
288+
sort($nums);
289+
$n = count($nums);
290+
$l = 0;
291+
$r = $nums[$n - 1] - $nums[0] + 1;
292+
293+
$check = function ($diff) use ($nums, $n, $p) {
294+
$cnt = 0;
295+
for ($i = 0; $i < $n - 1; ++$i) {
296+
if ($nums[$i + 1] - $nums[$i] <= $diff) {
297+
++$cnt;
298+
++$i;
299+
}
300+
}
301+
return $cnt >= $p;
302+
};
303+
304+
while ($l < $r) {
305+
$mid = intdiv($l + $r, 2);
306+
if ($check($mid)) {
307+
$r = $mid;
308+
} else {
309+
$l = $mid + 1;
310+
}
311+
}
312+
313+
return $l;
314+
}
315+
}
316+
```
317+
318+
#### Swift
319+
320+
```swift
321+
class Solution {
322+
func minimizeMax(_ nums: [Int], _ p: Int) -> Int {
323+
var nums = nums.sorted()
324+
let n = nums.count
325+
var l = 0
326+
var r = nums[n - 1] - nums[0] + 1
327+
328+
func check(_ diff: Int) -> Bool {
329+
var cnt = 0
330+
var i = 0
331+
while i < n - 1 {
332+
if nums[i + 1] - nums[i] <= diff {
333+
cnt += 1
334+
i += 2
335+
} else {
336+
i += 1
337+
}
338+
}
339+
return cnt >= p
340+
}
341+
342+
while l < r {
343+
let mid = (l + r) >> 1
344+
if check(mid) {
345+
r = mid
346+
} else {
347+
l = mid + 1
348+
}
349+
}
350+
351+
return l
352+
}
353+
}
354+
```
355+
244356
<!-- tabs:end -->
245357

246358
<!-- solution:end -->
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
public class Solution {
2+
public int MinimizeMax(int[] nums, int p) {
3+
Array.Sort(nums);
4+
int n = nums.Length;
5+
int l = 0, r = nums[n - 1] - nums[0] + 1;
6+
7+
bool check(int diff) {
8+
int cnt = 0;
9+
for (int i = 0; i < n - 1; ++i) {
10+
if (nums[i + 1] - nums[i] <= diff) {
11+
++cnt;
12+
++i;
13+
}
14+
}
15+
return cnt >= p;
16+
}
17+
18+
while (l < r) {
19+
int mid = (l + r) >> 1;
20+
if (check(mid)) {
21+
r = mid;
22+
} else {
23+
l = mid + 1;
24+
}
25+
}
26+
27+
return l;
28+
}
29+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution {
2+
/**
3+
* @param Integer[] $nums
4+
* @param Integer $p
5+
* @return Integer
6+
*/
7+
function minimizeMax($nums, $p) {
8+
sort($nums);
9+
$n = count($nums);
10+
$l = 0;
11+
$r = $nums[$n - 1] - $nums[0] + 1;
12+
13+
$check = function ($diff) use ($nums, $n, $p) {
14+
$cnt = 0;
15+
for ($i = 0; $i < $n - 1; ++$i) {
16+
if ($nums[$i + 1] - $nums[$i] <= $diff) {
17+
++$cnt;
18+
++$i;
19+
}
20+
}
21+
return $cnt >= $p;
22+
};
23+
24+
while ($l < $r) {
25+
$mid = intdiv($l + $r, 2);
26+
if ($check($mid)) {
27+
$r = $mid;
28+
} else {
29+
$l = $mid + 1;
30+
}
31+
}
32+
33+
return $l;
34+
}
35+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution {
2+
func minimizeMax(_ nums: [Int], _ p: Int) -> Int {
3+
var nums = nums.sorted()
4+
let n = nums.count
5+
var l = 0
6+
var r = nums[n - 1] - nums[0] + 1
7+
8+
func check(_ diff: Int) -> Bool {
9+
var cnt = 0
10+
var i = 0
11+
while i < n - 1 {
12+
if nums[i + 1] - nums[i] <= diff {
13+
cnt += 1
14+
i += 2
15+
} else {
16+
i += 1
17+
}
18+
}
19+
return cnt >= p
20+
}
21+
22+
while l < r {
23+
let mid = (l + r) >> 1
24+
if check(mid) {
25+
r = mid
26+
} else {
27+
l = mid + 1
28+
}
29+
}
30+
31+
return l
32+
}
33+
}

0 commit comments

Comments
 (0)