给你一个整数数组 `nums`,返回 数组 `answer` ,其中 `answer[i]` 等于 `nums` 中除 `nums[i]` 之外其余各元素的乘积 。
题目数据 **保证** 数组 `nums`之中任意元素的全部前缀元素和后缀的乘积都在 **32 位** 整数范围内。
请 **不要使用除法,** 且在 `O(n)` 时间复杂度内完成此题。
大量数据会超时
/**
* @param {number[]} nums
* @return {number[]}
*/
var productExceptSelf = function(nums) {
let xarr = [];
for (let i = 0; i < nums.length; i += 1) {
const before = i === 0 ? [1] : nums.slice(0, i)
const after = i === nums.length - 1 ? [1] : nums.slice(i+1)
xarr.push(eval(before.join('*') + '*' + after.join('*')))
}
return xarr;
};
看了提示1、2也没思路,直接看答案
var productExceptSelf = function(nums) {
const n = nums.length;
const pre = Array(n);
pre[0] = 1;
for (let i = 1; i < n; i++) {
pre[i] = pre[i - 1] * nums[i - 1];
}
const suf = Array(n);
suf[n - 1] = 1;
for (let i = n - 2; i >= 0; i--) {
suf[i] = suf[i + 1] * nums[i + 1];
}
const ans = Array(n);
for (let i = 0; i < n; i++) {
ans[i] = pre[i] * suf[i];
}
return ans;
};
作者:灵茶山艾府
链接:https://leetcode.cn/problems/product-of-array-except-self/solutions/2783788/qian-hou-zhui-fen-jie-fu-ti-dan-pythonja-86r1/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
大概知道了,放脑子里放脑子里