题链接:https://leetcode-cn.com/problems/gou-jian-cheng-ji-shu-zu-lcof/
题描述:
解题思路:
B[i] 的值为数组 A 中除了下标为 i 的元素的乘积。
B[0] = A[1] * A[2] * A[3] * A[4]。
分别迭代计算上三角和下三角两部分的乘积即可得出结果。
代码实现:
/**
* @param {number[]} a
* @return {number[]}
*/
var constructArr = function(a) {
let b = [];
b[0] = 1;
for (let i = 1; i < a.length; i++) {
b[i] = b[i - 1] * a[i - 1];
}
let temp = 1;
for (let i = a.length - 2; i >= 0; i--) {
temp *= a[i + 1];
b[i] *= temp;
}
return a.length > 0 ? b : a;
};
时间复杂度:O(n)
空间复杂度:O(1)(数组 b 作为返回值,不计入复杂度,如果计入,就是 O(n) 的空间复杂度)