两个数组a[N],b[N],实现b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];要求不能使用除法,时间复杂度O(n),空间复杂度O(1)。
#include <iostream>
using namespace std;
void Multiplication(int *a,int *b,int length){
b[0]=1;
for (int i=1; i<length; i++) {
b[i]=b[i-1]*a[i-1];
}
for (int i=length-2; i>0; i--) {
b[0]*=a[i+1];
b[i]*=b[0];
}
b[0]*=a[1];
}
int main(){
int a[]={2,3,4,5,6};
int b[5];//int b[]={}是不行的。栈内存(栈指针会修改a数组的值);切记一定指定数组大小,并注意数组越界。
int len=sizeof(a)/sizeof(int);
Multiplication(a, b, len);
for (int i=0; i<len; i++) {
cout<<b[i]<<" ";
}
cout<<endl;
return 0;
}