File tree Expand file tree Collapse file tree 5 files changed +321
-0
lines changed
solution/2600-2699/2616.Minimize the Maximum Difference of Pairs Expand file tree Collapse file tree 5 files changed +321
-0
lines changed Original file line number Diff line number Diff 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 -->
Original file line number Diff line number Diff 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 -->
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments