Bladeren bron

Adding failed attempt at solving 1200

Vinicius Teshima 1 maand geleden
bovenliggende
commit
ee8b1a4611
1 gewijzigde bestanden met toevoegingen van 64 en 0 verwijderingen
  1. 64 0
      PHP/1200.php

+ 64 - 0
PHP/1200.php

@@ -0,0 +1,64 @@
+<?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();