したがって、インデックス付き配列の任意の2つのランダムな値の可能な限り高い差を見つける必要がありますが、私の答えが正しいかどうかはわかりません。この質問の重みには単純すぎることをご存知でしょう。
function($array)
{
asort($array);
$diff = $array(sizeof($array) - 1) - $array(0);
return $diff;
}
私はこれが正しいと確信しています、そして再び私はいつも私の疑問を持っています!
あなたが見つける最大の違いは最大値と最小値の間であるということは正しいです。ただし、配列をスキャンしてソートせずに最小値と最大値を見つけるだけで、これをより効率的に実現できます(O(N log N)ではなくO(N))。
ロジックに頭を悩ませるだけで、これを手動で行う方法は次のとおりです。
$myarray = array(
'this' => 2,
'that' => 14,
'them' => -5,
'other' => 200,
'nothing' => 42,
'somethingelse' => 1,
'you' => 10,
'me' => 30);
foreach ($myarray as $key => $value) {
if (!isset ($min) || $value < $min) { $min = $value; }
if (!isset ($max) || $value > $max) { $max = $value; }
}
$diff = $max - $min;
echo $diff;