首页 > 解决方案 > 查找数组中最大的三个元素

问题描述

找到数组中最大的三个元素,给定一个包含所有不同元素的数组,找到最大的三个元素。预期时间复杂度为 O(n),额外空间为 O(1)

<?php 

$number = array(1,2,3,4,5,6,7,8,9,10); 

print_r($number); 
echo "<br>";
$biggest_number_1 = 0; 
$biggest_number_2 = 0; 
$biggest_number_3 = 0;
 for ($i=0; $i < count($number); $i++){
    if($number[$i] > $biggest_number_1){
          $biggest_number_1 = $number[$i]; 
    } 

    if($number[$i] > $biggest_number_2 && $number[$i] != 10){ 
    $biggest_number_2 = $number[$i]; 
    }

    if($number[$i] > $biggest_number_3 && $number[$i] != 10 && $number[$i] != 9){ 
    $biggest_number_3 = $number[$i]; 
    }

} 
echo $biggest_number_1."<br>"; 
echo $biggest_number_2."<br>"; 
echo $biggest_number_3; 

?>

标签: php

解决方案


最简单的方法应该是这样的:

$number = array(1,2,3,4,5,6,7,8,9,10);

rsort($number); // order array desc

// Just echo first 3 result in your array
echo $number[0]."<br>";
echo $number[1]."<br>";
echo $number[2];

现在如果你想循环到你的数组来得到结果,你可以试试这个:

$number = array(1,2,3,4,5,6,7,8,9,10);
$biggest_number_1 = $biggest_number_2= $biggest_number_3  = 0;

foreach ($number as $nb) {
    if ($nb > $biggest_number_1) {
        $biggest_number_3 = $biggest_number_2;
        $biggest_number_2 = $biggest_number_1;
        $biggest_number_1 = $nb;
    } else if ($nb > $biggest_number_2) {
        $biggest_number_3 = $biggest_number_2;
        $biggest_number_2 = $nb;
    } else if  ($nb > $biggest_number_3) {
        $biggest_number_3 = $nb;
    }
}

echo $biggest_number_1."<br>";
echo $biggest_number_2."<br>";
echo $biggest_number_3;

推荐阅读