我需要通过将两个递增索引位置(即a[0]*a[1]
或a[1]*a[2]
)的值相乘来计算最大乘积。实际返回的结果必须是在每个项目上调用的此函数的最大绝对值:
const adjacentElementsProduct = (array) => {
let maxProduct = 0;
for (let i = 0; i < array.length; i++) {
const result = array[i] * array[i + 1];
if (result > maxProduct) {
maxProduct = result
}
}
return maxProduct;
}
现在,当使用正整数时,这似乎返回了预期的结果,但是我正在努力理解对于负数它也可能如何工作。在这一点上,我对数组的理解还很肤浅,因此非常欢迎有一个很好的解释。
谢谢。
答案 0 :(得分:3)
现在,当使用正整数时,这似乎返回了预期的结果,但是我正在努力理解对于负数也可以如何工作
完全一样。 -1比-5更高。
如果您想使用负数数组中的最小值,只需将<button type="submit" id="search-start" class="submit btn btn-primary" value="Search" data-ga="event" data-ga-category="Search 6.6" data-ga-action="button" data-ga-label="Search Button"><i class="fa fa-search hidden-sm hidden-md hidden-lg"></i> <span class="hidden-xs">Search</span></button>
更改为>
。
如果您要在正负两个数组中最高的 absolute 值,则只要将数组全部为负,只需将<
更改为>
数字,请使用<
,然后继续与const result = Math.abs(array[i] * array[i + 1]);
进行比较。