题目描述:
给定一个数组剑指offer——构建乘积数组_i++,请构建一个数组剑指offer——构建乘积数组_i++_02,其中B中的元素剑指offer——构建乘积数组_数组_03。不能使用除法。

思路:

剑指offer——构建乘积数组_i++_04


如图所示:需要计算的剑指offer——构建乘积数组_数组_05可以分成两部分求解,按照对角线划分为两部分。前半部分定义为剑指offer——构建乘积数组_i++_06,后半部分定义为剑指offer——构建乘积数组_i++_07剑指offer——构建乘积数组_i++_08

class Solution {
public:
vector<int> multiply(const vector<int>& A) {
if(A.size()<2)
return {};
int n=A.size();
vector<int> res(n);
res[0]=1;
for(int i=1;i<n;i++){
res[i]=res[i-1]*A[i-1];
}
int temp=1;
for(int i=n-2;i>=0;i--){
temp*=A[i+1];
res[i]*=temp;
}
return res;
}
};