通过数组搜索并找到最佳的1对?

时间:2011-05-17 15:10:37

标签: php arrays

假设我们有一个简单的(非关联)数组,其中包含100001个值,这些值按照未分类的顺序设置,如45,12,32,23。我们知道在这个数组中是1对数字,如何找到它最佳 - 不是通过2个foreach循环,甚至不是通过2 for for 100001/2分区?

2 个答案:

答案 0 :(得分:1)

使用array_count_values

$result=array_count_values($arr);
$value=array_search(2, $result);

print $value;

答案 1 :(得分:0)

由于你的数组没有排序,除了随机散射之外的唯一搜索方法是按顺序扫描数组并查找你的两个数字:

$first_key = null;
$second_key = null;

foreach($array as $key => $val) {
    if ($val == $first_number) {
       $first_key = $key;
    }
    if ($val == $second_number) {
       $second_key = $key;
    }
    if (!is_null($first_key) && !is_null($second_key)) {
        break;
    }
}

一旦找到两个数字,或者你到达数组的末尾,循环就会退出。