这是一个递推的题目:
两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];要求:
1.不准用除法运算
2.除了循环计数值,a[N],b[N]外,不准再用其他任何变量(包括局部变量,全局变量等)
3.满足时间复杂度O(n),空间复杂度O(1)。
不能用除法,那b[i]的表示就可以分为两部分:a[0]*a[1]*a[2]...*a[i-1]和a[i+1]*a[i+2]...*a[N-1]。特点呢就是他们都是连续的,我们令前半部分为C[i],后半部分为D[i],那么C[i] = C[i-1] * a[i-1], D[i] = D[i+1] * a[i+1]; 我们可以用b[i]来临时保存C[i],然后再把a[i]保存D[i],最后再分别做一次乘法就可以了。
不是递归哦!