|
|
@@ -1,64 +0,0 @@
|
|
|
-<?php
|
|
|
-# 1200. Minimum Absolute Difference
|
|
|
-
|
|
|
-# Failed
|
|
|
-class Solution {
|
|
|
-
|
|
|
- /**
|
|
|
- * @param Integer[] $arr
|
|
|
- * @return Integer[][]
|
|
|
- */
|
|
|
- function minimumAbsDifference($arr) {
|
|
|
- $abs_arr = array_map('abs', $arr);
|
|
|
- asort($abs_arr);
|
|
|
- $abs_arr_keys = array_keys($abs_arr);
|
|
|
-
|
|
|
- $matchs = [];
|
|
|
-
|
|
|
- $min_diff = 99999999999;
|
|
|
-
|
|
|
- $limit = count($abs_arr) - 1;
|
|
|
- $f = current($abs_arr);
|
|
|
- for ( $i = 0; $i < $limit; ++$i) {
|
|
|
- $s = next($abs_arr);
|
|
|
- $diff = $s - $f;
|
|
|
- $f = $s;
|
|
|
-
|
|
|
- $fo = $arr[$abs_arr_keys[$i]];
|
|
|
- $so = $arr[$abs_arr_keys[$i+1]];
|
|
|
- if ( $fo >= $so ) { continue; }
|
|
|
-
|
|
|
- if ( $diff < $min_diff ) { $min_diff = $diff; }
|
|
|
- if ( ! array_key_exists($diff, $matchs) ) {
|
|
|
- $matchs[$diff] = [[$i, $i+1]]; continue;
|
|
|
- }
|
|
|
- array_push($matchs[$diff], [$i, $i+1]);
|
|
|
- }
|
|
|
-
|
|
|
- $res = [];
|
|
|
-
|
|
|
- foreach ( $matchs[$min_diff] as $t ) {
|
|
|
- $f = $arr[$abs_arr_keys[$t[0]]];
|
|
|
- $s = $arr[$abs_arr_keys[$t[1]]];
|
|
|
- array_push($res, [$f, $s]);
|
|
|
- }
|
|
|
-
|
|
|
- return $res;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-function main() {
|
|
|
- function r($a, $exp) {
|
|
|
- $S = new Solution;
|
|
|
- $r = $S->minimumAbsDifference($a);
|
|
|
- $str_a = json_encode($a);
|
|
|
- $str_r = json_encode($r);
|
|
|
- $str_exp = json_encode($exp);
|
|
|
- echo "Solution().minimumAbsDifference(\"$str_a\") = $str_r | exp: $str_exp\n";
|
|
|
- }
|
|
|
- r([4,2,1,3], [[1,2],[2,3],[3,4]]);
|
|
|
- r([1,3,6,10,15], [[1,3]]);
|
|
|
- r([3,8,-10,23,19,-4,-14,27], [[-14,-10],[19,23],[23,27]]);
|
|
|
-}
|
|
|
-
|
|
|
-main();
|