javascript - 函数返回无效值
问题描述
实现 getarrayproduct 函数,它获取一个数字数组并返回一个相同大小的数组,其中 numbers[I] 等于该元素左右所有元素的乘积。
笔记:
初始数组至少包含 2 个元素 数组只包含正数 数字可以重复 示例:
getArrayProduct([1,5,2]) === [10,2,5]
第一个元素 10 是除第一个元素 1 之外的所有数组元素的乘积 第二个元素 2 是除第二个元素 5 之外的所有数组元素的乘积 第三个元素 5 是除第三个元素 2 之外的所有数组元素的乘积
和
getArrayProduct([12,20]) === [20,12]
数组 20 中的第一个元素是除第一个元素之外的所有数组元素的乘积 第二个元素 12 是除第二个元素之外的所有数组元素的乘积
我的代码
function getArrayProduct(numbers) {
let arr = []
let a = 0;
let l = numbers.length;
if (numbers.length == 2) {
arr = numbers.reverse()
return arr
}
while(true) {
if (a + 1 !== NaN) {
if ((a + 1) == numbers.length) {
arr[a] = numbers[a] * numbers[0]
} else {
arr[a] = numbers[a] * numbers[a+1]
}
}
if (a > numbers.length - 2) {
break;
}
a++;
l--;
}
return arr
}
函数“getArrayProduct”应该返回正确的数组:
[4, 5, 2, 19, 8, 80]
预期的:
"[121600,97280,243200,25600,60800,6080]"
已收到:
"[20,10,38,152,640,320]"
和 getArrayProduct([1,5,2]) === [10,2,5] - (预期)和我的结果 [5,10,2]
解决方案
替代方法:例如:[1,5,2] 一次将数组中的所有数字相乘。你会得到 ans 1x5x2 = 10
现在您的输出数组将是 [product/1, product/5, product/2] == [10/1,10/5,10/2] == [10,2,5]
对于数组中的每个索引,此方法将消除一次又一次地将相同数字相乘的工作。
function getArrayProduct(numbers) {
let arr = []
let product = 1, i=0;
for (i=0;i<numbers.length;i++){
product=product*numbers[i];
}
for(i=0;i<numbers.length;i++)
{
arr[i] = product/numbers[i];
}
return arr;
}
推荐阅读
- python - 更新 mongodb 集合中的列
- javascript - Draft.js 中的字体定义
- c# - 如何枚举真正的 Windows 文件资源管理器窗口
- google-cloud-platform - 如何设置本地部署凭据
- r - 如何根据传单R中的列设置标记颜色
- python - python张量形状未正确检测到
- basic-authentication - 用于无头和有头的 Webdriverio 的基本身份验证
- r - 有没有一种简单的方法可以使用 R 的 areaplot() 步骤而不是插值点?
- javascript - 如何在一个单元格中使表格更多单元格
- python - 在 Azure Web 应用程序上部署 React - django 应用程序