除自身以外数组的乘积

leetcode 算法题

分析

  • 不要用除法:只能使用乘法
  • 复杂度为 n :只能遍历一次或者有限次
  • 结果:分为左右两部分,可以通过左边的积与右边的积相乘的方式得到结果

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @param {number[]} nums
* @return {number[]}
*/
var productExceptSelf = function (nums) {
const len = nums.length
const result = new Array(len).fill(1) // 初始化结果数组
let left = 1
let right = 1
for (let i = 0; i < len; i++) {
result[i] *= left // 除当前元素的左积
left *= nums[i] // 当前元素的左积

result[len - 1 - i] *= right // 除当前元素的右积
right *= nums[len - i - 1] // 当前元素的右积
}
return result
}