陣列 構建乘積陣列

2021-10-17 19:07:39 字數 847 閱讀 5291

給定乙個陣列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];)

既然不能用乘法,分析題目,我們可以將乘積拆為兩項。即:

c[i]=a[0]*a[1]*…*a[i-1]

d[i]=a[i+1]*a[i+2]*…*a[n-1]

b[i]=c[i]*d[i]

我們先來計算c[i],使用數學歸納法:

c[0]=1

c[1]=a[0]

c[2]=a[0]*a[1]

c[3]=a[0]*a[1]*a[2]……..

我們可以得出規律:c[i] = c[i-1] * a[i -1](i >=1)

我們繼續用數學歸納法計算d[i]:

d[n-1]=1

d[n-2]=a[n-1]

d[n-3]=a[n-1]*a[n-2]

我們可以得出規律:d[i] = d[i + 1]* a[i + 1](i <= n-2)

function

multiply(array)

res[0]=1

//計算c[i]

for(let i = 1; i < array.length; i++)

//計算d[i]

for(let j = array.length - 2, temp = 1; j >= 0; j--)

return

res}

劍指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 不能使用除法。注意 規定b 0 a 1 a 2 a n 1 b n 1 a 0 a 1 a n 2 include include...

劍指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 不能使用除法。注意 規定b 0 a 1 a 2 a n 1 b n 1 a 0 a 1 a n 2 對於a長度為1的情況,b無意義,故而無法構建,因此該情況不會...

構建乘積陣列

給定乙個陣列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 n 2 後參考劍指的方法,複雜度降為o n 涉及到這種容易重複計算的要考慮用空間記錄前列的結果 陣列乘...