Tikson
@Tikson

Как решить эту задачу — выбор двух больших чисел?

Нужно вывести две самые большие цифры в массиве. https://www.codewars.com/kata/511f11d355fe575d2c00...
Я задачу на локальной машине решил, но на сайте ответ не подходит
Вот мое решение
function twoOldestAges($ages) {
sort($ages);
$e=array_slice($ages,-2);
foreach($e as $n){
    echo $n."<br>";
}
}

Вот еще мой код для тестов
<?php
$arr= [1, 2, 10, 8];
$abc= [1, 5, 87, 45, 8, 8] ;
$qwe= [1, 3, 10, 0];
sort($arr);
$e=array_slice($arr,-2);
foreach($e as $n){
    echo $n."<br>";
}

sort($abc);
$e2=array_slice($abc,-2);
foreach($e2 as $n){
    echo $n."<br>";
}

sort($qwe);
$e3=array_slice($qwe,-2);
foreach($e3 as $n){
    echo $n."<br>";
}

Как решить, почему ошибку выдает?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
0xD34F
@0xD34F
почему ошибку выдает?

Потому что вы условие задачи до конца не прочитали. Или прочитали, но не поняли. Что должна делать ваша функция:

It should take an array of numbers as its argument and return the two highest numbers within the array.

Что означает "return" знаете? Никакого foreach-echo не надо:

function twoOldestAges($ages) {
  sort($ages);
  return array_slice($ages, -2);
}

А вообще, от вас при решении этой задачи другого ждут, сложность должна быть линейной:

function twoOldestAges($ages) {
  $a = -INF;
  $b = -INF;

  foreach ($ages as $n) {
    if ($n > $a) {
      $b = $a;
      $a = $n;
    } else if ($n > $b) {
      $b = $n;
    }
  }
  
  return [ $b, $a ];
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы