Gibt es einen zweidimensionalen Array-Zusammenführungs- und Deduplizierungsalgorithmus mit O(n)-Komplexität
?Gibt es einen zweidimensionalen Array-Zusammenführungs- und Deduplizierungsalgorithmus mit O(n)-Komplexität
?
<code class="php">$a = [ ['id'=>1], ['id'=>2], ['id'=>3], ['id'=>4], ['id'=>5], ['id'=>6] ]; $b = [ ['id'=>5], ['id'=>6], ['id'=>7], ]; $c = [ ['id'=>8], ['id'=>9] ]; function array_unique_merge() { $params = func_get_args(); $result = []; $hashmap = []; $arr_count = count($params); for($i = 0; $i<$arr_count; $i++) { foreach($params[$i] as $key => $val) { $md5 = md5(json_encode($val)); if (!isset($hashmap[$md5])) { $hashmap[$md5] = true; $result[] = $val; } } } return $result; } print_r(array_unique_merge($a, $b, $c));</code>
Ich poste nur meine Gedanken dazu, wie das geht. Wenn sich n
auf die Summe der Anzahl der Elemente aller Arrays bezieht.
Hierfür müssen 2 Schleifen verwendet werden. Die Definition von n sollte die Summe der Elemente mehrerer assoziativer Arrays sein.
Serialisieren wird später als Hash-Vergleich verwendet. Was ist diese Idee? Ich werde keinen Code für Mobiltelefone schreiben...