238 Product of Array Except Self 除自身以外数组的乘积

一个长度为 n 的整形数组nums,其中 n > 1,返回一个数组 output ,其中 output[i] 等于nums中除nums[i]以外所有元素的乘积。
不用除法 且在O(n)内解决这个问题。
例如,输入 [1,2,3,4],返回 [24,12,8,6]。
进阶:
你可以在常数空间复杂度内解决这个问题吗?(注意:出于空间复杂度分析的目的,输出数组不被视为额外空间。)
详见:https://leetcode.com/problems/product-of-array-except-self/description/

Java实现:

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n=nums.length;
        int[] f=new int[n];
        int[] b=new int[n];
        int[] r=new int[n];
        Arrays.fill(f,1);
        Arrays.fill(b,1);
        for(int i=0;i<n-1;++i){
            f[i+1]=f[i]*nums[i];
        }
        for(int i=n-1;i>0;--i){
            b[i-1]=b[i]*nums[i];
        }
        for(int i=0;i<n;++i){
            r[i]=f[i]*b[i];
        }
        return r;
    }
}

C++实现:

class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
        int n=nums.size();
        vector<int> f(n,1),b(n,1),res(n);
        for(int i=0;i<n-1;++i)
        {
            f[i+1]=f[i]*nums[i];
        }
        for(int i=n-1;i>0;--i)
        {
            b[i-1]=b[i]*nums[i];
        }
        for(int i=0;i<n;++i)
        {
            res[i]=f[i]*b[i];
        }
        return res;
    }
};

 参考:https://www.cnblogs.com/grandyang/p/4650187.html

原文地址:https://www.cnblogs.com/xidian2014/p/8759924.html