【日常学习-算法:除自身外数组的乘积】

17 阅读1分钟

题目

给你一个整数数组 `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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

大概知道了,放脑子里放脑子里