题目描述
- 给定一个数组
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]
题目解读
- 剑指Offer 312
- 书上讲的很详细,看书
代码
class Solution {
public:
vector<int> multiply(const vector<int>& A) {
int length = A.size();
vector<int> B(length, 1);
for(int i=1; i < length; i++){
B[i] = B[i-1] * A[i-1];
}
int temp = 1;
// 在上一步,B[length-1]已经构建好了
for(int i=length-2; i >= 0; i--){
temp = temp * A[i+1];
B[i] = B[i] * temp;
}
return B;
}
};