-1
我有数组的数组:查找出现在所有给定的数组中的元素
(1, 3), (3, 5, 7), (2, 3, 4), (3, 7, 9)
我需要找到出现在所有子阵列, 在这种情况下,这个数字是“3”的值。
最有效的解决方案,我能找到的O(N^3),我想知道是否有更有效的方式来实现这一目标。
我有数组的数组:查找出现在所有给定的数组中的元素
(1, 3), (3, 5, 7), (2, 3, 4), (3, 7, 9)
我需要找到出现在所有子阵列, 在这种情况下,这个数字是“3”的值。
最有效的解决方案,我能找到的O(N^3),我想知道是否有更有效的方式来实现这一目标。
您可以array_intersect
尝试:
$output = array_intersect($array1, $array2, $array3, ...);
或自动多:
$input = array(array(1, 3), array(3, 5, 7), array(2, 3, 4), array(3, 7, 9));
$output = $input[0];
foreach ($input as $key => $subarray) {
if ($key == 0) {
continue;
}
$output = array_intersect($output, $subarray);
if (empty($output)) {
break;
}
}
var_dump($output);
谢谢你!我已经把你的想法,改变了一点: 我用: call_user_func_array(“array_intersect”,$值)) 这是一个比较有效的。我想知道如果我应该首先找到具有最少元素的价值,并将其作为第一个参数出于效率考虑,但这是另一回事。 – Avenger