剑指offer
题目:构建乘积数组
题目描述:给定一个数组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]。不能使用除法。(注意:规定B[0] = A[1]A[2] … A[n-1],B[n-1] = A[0] A[1] … A[n-2];)
代码:
#include <iostream>
#include <vector>
using namespace std;
class Solution
{
public:
vector<int> multiply(const vector<int>& A)
{
int len = A.size();
vector<int> B;
if(0 == len)
{
return B;
}
B.push_back(1);
for(int i=0; i<len-1; i++)
{
B.push_back(B.back()*A[i]);
}
int temp = 1;
for(int i=len-1; i>=0; i--)
{
B[i] *= temp;
temp *= A[i];
}
return B;
}
void Func_ShowArray(vector<int> A)
{
vector<int>::iterator it;
for(it = A.begin(); it != A.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
};
int main()
{
vector<int> array_A;
for(int i=1; i<6; i++)
{
array_A.push_back(i);
}
Solution A;
A.Func_ShowArray(array_A);
vector<int> array_B = A.multiply(array_A);
A.Func_ShowArray(array_B);
}