编程习题05

1、给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i]。在构造过程:
不允许使用除法;
要求O(1)空间复杂度和O(n)时间复杂度;
除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、对空间和全局静态变量等);
请用程序实现并简单描述。

public static void main(String[] args) {
        int[] a = {1,2,3,4,5,6,7,8,9};
        int [] b = new int[a.length];
        int i;
        b[0] = 1;
        b[1] = a[0];
        for(i = 2;i < b.length;i++){
            b[i] = a[i-1]*b[i-1];
        }
        for(i = b.length -2;i >= 0;i--){
            b[i] = b[i] * a[i+1];
            a[i] = a[i+1] * a[i];
        }
        for(int j : b)
            System.out.print(j +" ");
    }
原文地址:https://www.cnblogs.com/YESheng/p/3658823.html