您的位置:首页 > Web前端

剑指Offer——构建数组B[i]=A[0]*A[1]*....A[i-1]*A[i+1]*A[i+2]*...A[n-1],不能使用除法

2016-04-08 21:55 555 查看
主要思路:

定义C[i] = A[0]*A[1]*....A[i-1],自上而下求C[i] , C[i] = C[i-1] *A[i-1]

定义D[i] = A[i+1]*A[i+2]*...A[n-1] ,自下而上求D[i], D[i] = D[i+1] *A[i+1]

void multiply (const vector<double>& array1, vector<double> & array2)
{
int length1 = array1.size();
int length2 = array2.size();
if(length1 == length2 && length2 < 2)
{
array2[0] =1;
for(int i = 1; i< length1; ++i)
{
array2[i] = array2[i-1] * array1[i-1];
}
double temp = 1;
for(int i = length1-2; i >= 0; --i)
{
temp *= array1[i+1];
array2[i] *= temp;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: