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 关注
- 142 浏览
添加回答
举报