zoukankan      html  css  js  c++  java
  • 剑指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]。不能使用除法。
     
    方法一:逐个相乘,时间复杂度为O(n2)
     1 public int[] multiply(int[] A) {//数组 my
     2         if(null==A){
     3             return null;
     4         }
     5         int[] re = new int[A.length];
     6         for(int i=0;i<A.length;i++){
     7             re[i]=1;
     8         }
     9         for(int i=0;i<A.length;i++){
    10             for(int j=0;j<A.length;j++){
    11                 if(i!=j){
    12                     re[j]*=A[i];
    13                 }
    14             }
    15         }
    16         return re;
    17     }

    方法二:先正向计算B[i]=A[0]*A[1]*...*A[i-1],再逆向相乘B[i]*=A[n-1]*A[n-2]*...*A[i+1],时间复杂度为O(n)

     1 public int[] multiply(int[] A) {//数组 mytip
     2         if(null==A||0==A.length){
     3             return null;
     4         }
     5         int[] re = new int[A.length];
     6         re[0] = 1;
     7         for(int i=1;i<A.length;i++){
     8             re[i]=re[i-1]*A[i-1];
     9         }
    10         int temp = 1;
    11         for(int i=A.length-1;i>=0;i--){
    12             re[i]*=temp;
    13             temp*= A[i];
    14         }
    15         return re;
    16     }
  • 相关阅读:
    37. 解数独
    皮尔逊相关系数的计算以及数据的描述性统计
    商业微信小程序开发实战---1
    51. N皇后
    拟合算法
    216. 组合总和 III
    打印心性
    指针
    第五天
    循环 和 宏
  • 原文地址:https://www.cnblogs.com/zhacai/p/10673168.html
Copyright © 2011-2022 走看看