-1

我有一个数组数组:

(1, 3), (3, 5, 7), (2, 3, 4), (3, 7, 9)

我需要找到一个出现在所有子数组中的值,在这种情况下,该数字是“3”。

我能找到的最有效的解决方案是 O(n^3),我想知道是否有更有效的方法来实现这一点。

4

1 回答 1

1

您可以尝试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);
于 2012-09-24T09:25:35.183 回答