Skip to content

Latest commit

 

History

History
38 lines (35 loc) · 828 Bytes

238-ProductofArrayExceptSelf.md

File metadata and controls

38 lines (35 loc) · 828 Bytes
//[a1    ,a2    ,a3    ,a4    ]

//[a2a3a4,a1a3a4,a1a2a4,a1a2a3]
//fvec:
//[1     ,a1    ,a1a2  ,a1a2a3]
//bvec:
//[a2a3a4,a3a4  ,a4    ,1     ]
class Solution 
{
public:
    vector<int> productExceptSelf(vector<int>& nums) 
    {
        int n = nums.size();
        //从前往后遍历的乘积
        vector<int> fvec(n, 1);
        //从后往前遍历的乘积
        vector<int> bvec(n, 1);
        //存放结果的数组
        vector<int> res(n, 1);
        for (int i = 1; i < n; i++)
        {
            fvec[i] = fvec[i-1] * nums[i-1];
        }
        
        for (int i = n - 2; i >= 0 ; i--)
        {
            bvec[i] = bvec[i + 1] * nums[i + 1];
        }
        
        for (int i = 0; i < n; i++)
        {
            res[i] = fvec[i] * bvec[i];
        }
        return res;
    }
};