牛客网——构建乘积数组

题目描述
给定一个数组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]。不能使用除法。

pre数组记录number[i]前面的乘积,last[i]记录后面的乘积
package 剑指offer;

/**
 * Created by Administrator on 2018/10/31.
 */
public class 构建乘积数组 {
    public static int[] multiply(int[] A) {
        int[] res=new int[A.length],pre=new int[A.length+1],last=new int[A.length+1];
        pre[0]=1;
        for(int i=1,tmp=1;i<A.length;tmp*=A[i++]){
            pre[i]=tmp;
        }
        for (int i=A.length-1,tmp=1;i>=0;tmp*=A[i--]){
            last[i]=tmp;
        }
        for(int i=0;i<A.length;i++){
            res[i]=pre[i]*last[i];
        }
        return res;
    }

    public static void main(String[] args){
        int[] num={1,2,3,4,5};
        int[] res=multiply(num);
        for(int i=0;i<res.length;i++){
            System.out.println(res[i]);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_36957153/article/details/83583750