js算法--- 数组中元素乘积

数组中元素乘积


要求:
给定某无序数组,要求返回新数组 output ,
其中 output[i] 为原数组中除了下标为 i 的元素之外的元素乘积,要求以 O(n) 复杂度实现:

思路:
假设现在给定一个数组[-2,-2,-3,2]
那么最后要求output的第一个元素为(-2)*(-3)*2=12
第二个元素为(-2) * (-3) * 2=12,
第三个元素为(-2) * (-2) * 2=8,
第四个元素为(-2) * (-2) * (-3)=-12,
可以发现最后一个元素的乘积就是前面三个元素的乘积,
倒数第二个元素的乘积就是前面两个的乘积再乘以最后一个元素…

所以我们的第一步就是得到在output里每个位置的前面几个元素的乘积,例如
对于第一个位置,我们给一个初始值1,因为1乘以任何数都不变
对于第二个位置,我们用初始值乘以第一个元素,即1*(-2)
对于第三个位置,1*(-2) * (-2)相当于前面两个数的乘积
对于第四个位置,1*(-2)* (-2)*(-3)相当于前面三个数的乘积

然后下一步我们要得到最终在output显示的元素
对于最后一个位置而言,毫无疑问,就是前面三个数的乘积
对于倒数第二个位置,它需要前面两个数的乘积再乘以最后一个数,我们第一步已经得到了前面两个数的乘积1*(-2)* (-2),
所以现在需要得到最后一个数,最后一个数同样的道理,我们可以用1最后一个数。
对于倒数第三个位置,它需要前面一个数的乘积再乘以最后两个数,我们第一步已经得到了前面一个数的乘积1 * (-2),
所以现在需要得到最后两个数的乘积,同样的道理,我们可以用1
最后两个数1 * 2 * (-3)。所以最终结果就是第一个数乘以最后两个数1*(-2)* 1 * 2*(-3)


const arr1 = [2,2
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值