3 回答

TA貢獻1830條經驗 獲得超3個贊
與任何編程任務一樣,訣竅是一點一點地解決它。當您將問題分解為小組件時,您往往會發現您的代碼更具可讀性。
你需要:
查找數組中相鄰元素的乘積
找到該組值中最大的產品
您可以在沒有大量變量、嵌套等的情況下解決此問題。
function adjacentElementsProduct(array $inputs) {
$products = [];
for ($i = 1; $i < count($inputs); $i++) {
$products[] = $inputs[$i - 1] * $inputs[$i];
}
return max($products);
}
我們所做的只是循環輸入數組,從第二個元素開始。計算前一個元素和當前元素的乘積,然后將結果放入一個乘積數組中。最后,我們運行它將max()為我們找到最大值。
重要的是要注意:這里沒有進行驗證。你能相信你的數組永遠只包含數值嗎?它總是至少包含兩個元素嗎?如果不是,你會想要考慮到這一點。

TA貢獻1890條經驗 獲得超9個贊
這是我將如何做到的
$inputArray = [3, 6, -2, -5, 7, 3];
function adjacentElementsProduct($inputArray) {
$max = 0;
for($i = 0; $i < (sizeof($inputArray) - 1); $i++){
$b = $i+1;
if($inputArray[$i] > 0 && $inputArray[$b] > 0){
$max = (($inputArray[$i] * $inputArray[$b]) > $max) ? ($inputArray[$i] * $inputArray[$b]) : $max;
}
}
return $max;
}
echo adjacentElementsProduct($inputArray); // Outputs 21

TA貢獻1777條經驗 獲得超3個贊
function adjacentElementsProduct($inputArray) {
$res = [];
for($j=0;$j<count($inputArray);$j++){
$res[] = $inputArray[$j]*$inputArray[$j+1];
}
return (max($res) < 0) ? 0 : max($res);
}
- 3 回答
- 0 關注
- 174 瀏覽
添加回答
舉報