PHP: AdjacentElementsProduct - CodeFights

题:


给定一个整数数组,找到具有最大乘积的相邻元素对并返回该乘积。


例子:


https://app.codesignal.com/arcade/intro/level-2


对于 inputArray = [3, 6, -2, -5, 7, 3],输出应为 nextElementsProduct(inputArray) = 21。


7 和 3 生产最大的产品。


输入输出


输入: inputArray: [3, 6, -2, -5, 7, 3]


预期输出:21


解决方案:我的代码不起作用:


function adjacentElementsProduct($inputArray) {

    $total = 0;

    $temp = 0;

    $maxProduct = 0;

    $var = 0;


    if ($inputArray.count == 1) return 0;


    for ($i = 0; $i < $inputArray[$inputArray.count-1]; $i++) {

        if ($inputArray[i] + $inputArray[i+1] > $maxProduct) {

            $maxProduct = $inputArray[i] * $inputArray[i+1];    

        }

    }


    return $maxProduct;

}


青春有我
浏览 143回答 3
3回答

牛魔王的故事

与任何编程任务一样,诀窍是一点一点地解决它。当您将问题分解为小组件时,您往往会发现您的代码更具可读性。你需要:查找数组中相邻元素的乘积找到该组值中最大的产品您可以在没有大量变量、嵌套等的情况下解决此问题。function adjacentElementsProduct(array $inputs) {&nbsp; &nbsp; $products = [];&nbsp; &nbsp; for ($i = 1; $i < count($inputs); $i++) {&nbsp; &nbsp; &nbsp; &nbsp; $products[] = $inputs[$i - 1] * $inputs[$i];&nbsp; &nbsp; }&nbsp; &nbsp; return max($products);}我们所做的只是循环输入数组,从第二个元素开始。计算前一个元素和当前元素的乘积,然后将结果放入一个乘积数组中。最后,我们运行它将max()为我们找到最大值。重要的是要注意:这里没有进行验证。你能相信你的数组永远只包含数值吗?它总是至少包含两个元素吗?如果不是,你会想要考虑到这一点。

当年话下

这是我将如何做到的$inputArray =&nbsp; [3, 6, -2, -5, 7, 3];function adjacentElementsProduct($inputArray) {&nbsp; &nbsp;$max = 0;&nbsp; &nbsp;for($i = 0; $i < (sizeof($inputArray) - 1); $i++){&nbsp; &nbsp; &nbsp; &nbsp;$b = $i+1;&nbsp; &nbsp; &nbsp; &nbsp;if($inputArray[$i] > 0 && $inputArray[$b] > 0){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$max = (($inputArray[$i] * $inputArray[$b]) > $max) ? ($inputArray[$i] * $inputArray[$b]) : $max;&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp;}&nbsp; &nbsp;return $max;}echo adjacentElementsProduct($inputArray); // Outputs 21

慕森王

function adjacentElementsProduct($inputArray) {&nbsp; &nbsp; $res = [];&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; for($j=0;$j<count($inputArray);$j++){&nbsp; &nbsp; &nbsp; &nbsp; $res[] = $inputArray[$j]*$inputArray[$j+1];&nbsp; &nbsp; }&nbsp; &nbsp; return (max($res) < 0) ? 0 : max($res);}
打开App,查看更多内容
随时随地看视频慕课网APP