为了账号安全,请及时绑定邮箱和手机立即绑定

PHP: AdjacentElementsProduct - CodeFights

PHP: AdjacentElementsProduct - CodeFights

PHP
青春有我 2021-11-05 14:46:24
题:给定一个整数数组,找到具有最大乘积的相邻元素对并返回该乘积。例子: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;}
查看完整描述

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()为我们找到最大值。


重要的是要注意:这里没有进行验证。你能相信你的数组永远只包含数值吗?它总是至少包含两个元素吗?如果不是,你会想要考虑到这一点。


查看完整回答
反对 回复 2021-11-05
?
当年话下

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


查看完整回答
反对 回复 2021-11-05
?
慕森王

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);

}


查看完整回答
反对 回复 2021-11-05
  • 3 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信