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

新手上路,请多包涵

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

这是我的代码

function adjacentElementsProduct(inputArray) {
 var arr = inputArray;
  var x=0;
  var y=0;
  var p=0;
  for(var i=0;i<arr.length;i++){
    x=arr[i];
    y=arr[i+1];
    if(x*y>p){
     p=x*y;
    };
  };
 return p;
};

问题是所有测试都工作正常,但除了带有负面产品的阵列, 如所附照片中所示,任何人都可以提供帮助..提前致谢

在此处输入图像描述

原文由 Fady Safwat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 644
2 个回答

您可以从一个非常大的负值开始,而不是零。

 var p = -Infinity;

原文由 Nina Scholz 发布,翻译遵循 CC BY-SA 3.0 许可协议

您正在将变量 p 初始化为零。这意味着不接受任何小于该值的乘法值。而是将其设置为可能的最小整数值:

 var p = Number.MIN_SAFE_INTEGER;

 function adjacentElementsProduct(inputArray) {
  var arr = inputArray;
  var x = 0;
  var y = 0;
  var p = Number.MIN_SAFE_INTEGER;
  for (var i = 0; i < arr.length; i++) {
    x = arr[i];
    y = arr[i + 1];
    if (x * y > p) {
      p = x * y;
    };
  };
  return p;
};

console.log(adjacentElementsProduct([-23, 4, -3, 8, -12]));

原文由 Nisarg Shah 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题