<?php
function getTwoMaxOfArray
(array $array) { $arrCount = count($array); if ($arrCount < 3) {
return $array;
}
$firstMax = $array[0];
$secondMax = $array[0];
for ($i = 1; $i < $arrCount; $i++) {
if ($array[$i] === $firstMax || $array[$i] === $secondMax) {
continue;
}
if ($array[$i] > $firstMax) {
$secondMax = $firstMax;
$firstMax = $array[$i];
} elseif ($array[$i] > $secondMax || $secondMax === $firstMax) {
$secondMax = $array[$i];
}
}
return [$firstMax, $secondMax];
}
assert([] === getTwoMaxOfArray
([])); assert([1] === getTwoMaxOfArray
([1])); assert([2, 1] === getTwoMaxOfArray
([2, 1])); assert([4, 3] === getTwoMaxOfArray
([2, 3, 4])); assert([3, 2] === getTwoMaxOfArray
([1, 2, 2, 2, 3, 3])); assert([3, 1] === getTwoMaxOfArray
([1, 1, 1, 3, 3])); assert([3, 2] === getTwoMaxOfArray
([3, 3, 3, 2, 2, 1, 1, 1])); assert([3, 2] === getTwoMaxOfArray
([3, 3, 3, 2])); assert([3, 2] === getTwoMaxOfArray
([3, 2, 1])); assert([3, 2] === getTwoMaxOfArray
([1, 2, 3]));
PD9waHAKCmZ1bmN0aW9uIGdldFR3b01heE9mQXJyYXkoYXJyYXkgJGFycmF5KSB7CiAgICAkYXJyQ291bnQgPSBjb3VudCgkYXJyYXkpOwogICAgaWYgKCRhcnJDb3VudCA8IDMpIHsKICAgICAgICByZXR1cm4gJGFycmF5OwogICAgfQoKICAgICRmaXJzdE1heCA9ICRhcnJheVswXTsKICAgICRzZWNvbmRNYXggPSAkYXJyYXlbMF07CiAgICBmb3IgKCRpID0gMTsgJGkgPCAkYXJyQ291bnQ7ICRpKyspIHsKICAgICAgICBpZiAoJGFycmF5WyRpXSA9PT0gJGZpcnN0TWF4IHx8ICRhcnJheVskaV0gPT09ICRzZWNvbmRNYXgpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGlmICgkYXJyYXlbJGldID4gJGZpcnN0TWF4KSB7CiAgICAgICAgICAgICRzZWNvbmRNYXggPSAkZmlyc3RNYXg7CiAgICAgICAgICAgICRmaXJzdE1heCA9ICRhcnJheVskaV07CiAgICAgICAgfSBlbHNlaWYgKCRhcnJheVskaV0gPiAkc2Vjb25kTWF4IHx8ICRzZWNvbmRNYXggPT09ICRmaXJzdE1heCkgewogICAgICAgICAgICAkc2Vjb25kTWF4ID0gJGFycmF5WyRpXTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBbJGZpcnN0TWF4LCAkc2Vjb25kTWF4XTsKfQoKYXNzZXJ0KFtdID09PSBnZXRUd29NYXhPZkFycmF5KFtdKSk7CmFzc2VydChbMV0gPT09IGdldFR3b01heE9mQXJyYXkoWzFdKSk7CmFzc2VydChbMiwgMV0gPT09IGdldFR3b01heE9mQXJyYXkoWzIsIDFdKSk7CmFzc2VydChbNCwgM10gPT09IGdldFR3b01heE9mQXJyYXkoWzIsIDMsIDRdKSk7CmFzc2VydChbMywgMl0gPT09IGdldFR3b01heE9mQXJyYXkoWzEsIDIsIDIsIDIsIDMsIDNdKSk7CmFzc2VydChbMywgMV0gPT09IGdldFR3b01heE9mQXJyYXkoWzEsIDEsIDEsIDMsIDNdKSk7CmFzc2VydChbMywgMl0gPT09IGdldFR3b01heE9mQXJyYXkoWzMsIDMsIDMsIDIsIDIsIDEsIDEsIDFdKSk7CmFzc2VydChbMywgMl0gPT09IGdldFR3b01heE9mQXJyYXkoWzMsIDMsIDMsIDJdKSk7CmFzc2VydChbMywgMl0gPT09IGdldFR3b01heE9mQXJyYXkoWzMsIDIsIDFdKSk7CmFzc2VydChbMywgMl0gPT09IGdldFR3b01heE9mQXJyYXkoWzEsIDIsIDNdKSk7Cgo=