| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?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();
|