php - 查找数组中最大的三个元素
问题描述
找到数组中最大的三个元素,给定一个包含所有不同元素的数组,找到最大的三个元素。预期时间复杂度为 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;
?>
解决方案
最简单的方法应该是这样的:
$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;
推荐阅读
- c# - How to copy paste error messages from JetBrains Rider?
- python - 使用一个热编码器时出现gridsearchCV错误
- python - Since latest python version retains insertion order of dict,will the meaning of equality (==) change?
- jquery - Jquery Ajax Pagination Plugin
- go - Horizontally Autoscaled Kubernetes pods not pulling messages from Google Cloud Pub/Sub subscription
- sql-server-2008-r2 - SQL Server 2008 R2 Setup Stuck in Installation Progress in Windows 10
- php - 在 Wordpress / Woocommerce 中禁用插件功能
- c# - How to get AutoFixture working for immutable classes with tree like structure?
- forms - How can i create a new zend Form attribute
- java - OData V4 中的双向导航