給定乙個陣列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]。不能使用除法。
乙個for迴圈裡面巢狀兩個for迴圈即可
publicint multiply(int
a) int b=new
int[a.length];
for (int i = 0; i < b.length; i++)
for (int j = i+1; j < b.length; j++)
}return
b;
}
b[i]的值可以看作下圖的矩陣中每行的乘積。
下三角用連乘可以很容求得,上三角,從下向上也是連乘。
因此我們的思路就很清晰了,先算下三角中的連乘,即我們先算出b[i]中的一部分,然後倒過來按上三角中的分布規律,把另一部分也乘進去。
publicint multiply(int
a) int temp = 1;
//計算上三角
for(int j = length-2; j >= 0; j--)
}return
b; }
劍指offer 51 構建乘積陣列
給定乙個陣列a 0,1,n 1 請構建乙個陣列b 0,1,n 1 其中b中的元素b i a 0 x a 1 x x a i 1 x a i 1 x x a n 1 不能使用除法。由題目可知b i a 0 x a 1 x x a n 1 a i 題目裡面不能用除法 計算右邊的三角 也就是d i int...
劍指offer 51 構建乘積陣列
不能使用除法,那麼就構建兩個陣列 陣列1 larr,第一位是1,其餘位的數是a0a1 ai 1 陣列2 rarr,最後一位是1,其餘位是ai 1ai 2 an 1 最後返回b,b的每一位是larr i rarr i class solution def multiply self,a write c...
劍指offer51 構建乘積陣列
給定乙個陣列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 不能使用除法。注意 規定b 0 a 1 a 2 a n 1 b n 1 a 0 a 1 a n 2 對於a長度為1的情況,b無意義,故而無法構建,因此該情況不會...