构建乘积数组
题目描述
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。
解题思路:
从前往后累积乘积在每个数组元素中,然后从后往前累乘一个结果。
class Solution { public: vector<int> multiply(const vector<int>& A) { vector<int> res; int n = A.size(); res.push_back(1); //res中存每个累积的乘积 for(int i = 1; i < n; i++){ res.push_back(res.back() *A[i-1]); } //tmp累积从后往前的乘积 int tmp = 1; for(int i = res.size()-1; i >= 0; i--){ res[i] = res[i]*tmp; tmp *= A[i]; } return res; } };
学学学 练练练 刷刷刷