// 面试题66:构建乘积数组
// 题目:给定一个数组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]。不能使用除法。
static bool product_arr(const std::vector<double>& arr, std::vector<double>& output)
{
size_t len1 = arr.size();
size_t len2 = output.size();
if(len1 == len2 && len2 > 1)
{
output[0] = 1;
for(size_t i = 1; i < len1; ++i)
{
output[i] = output[i - 1] * arr[i - 1];
}
double temp = 1;
for(int i = len1 - 2; i >= 0; --i)
{
temp *= arr[i + 1];
output[i] *= temp;
}
return true;
}
return false;
}