給定乙個陣列a,構建乙個陣列 b,其中b中的元素b[i]=a[0]xa[1]x…a[i-1]xa[i+1]x…a[n-1]。不能a使用除法。
對於這道題,由於不能使用除法,可以把b[i]=a[0]xa[1]x…a[i-1]xa[i+1]x…a[n-1]看成是a[0]xa[1]x…a[i-1]和a[i+1]x…a[n-1]兩部分的乘積。可以定義c[i]=a[0]xa[1]x…a[i-1],
d[i]=a[i+1]x…a[n-1]。其中c[i]可以用上而下的順序計算出來,即c[i]=[i-1]xa[i-1]。對於d[i],可以用自下而上的方法進行計算,d[i]=d[i+1]xa[i+1]。最終b[i]=c[i]xd[i]。此演算法時間複雜度為o(n)。
**如下:
#include#includevoid multiply(int *array1, int length1, int *array2, int length2)
int temp = 1;
//d[i]=a[i+1]x...a[n-1]
for (int i = length1 - 2; i >= 0; --i)
}}
劍指Offer 66 構建乘積陣列
給定乙個陣列a 0,1,2,3,n 1 請構建乙個陣列b 0,1,2,3,n 1 條件為b i a 0 a 1 a 2 a i 1 a i 1 a n 1 限制 不能使用除法 也就是說b i 等於 a 陣列中除a i 以外的其他所有元素之積 思路1 先來舉例分析一下 例如陣列a 元素個數n 5 b ...
劍指 Offer 66 構建乘積陣列
劍指 offer 66.構建乘積陣列 給定乙個陣列 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 不能使用除法。示例 輸入 1,2,3,4,5 輸出 120,60,40,30,24 所有元素乘積之和不會溢位 3...
劍指 Offer 66 構建乘積陣列
題目如上。思路如下 我們假設應該返回的答案為陣列ans。顯而易見ans的陣列長度應等於入參a陣列的長度。按照題意,對應於ans陣列中的每乙個元素ans i 其大小應為 ans i a 0 times a 1 times cdots times a i 1 times a i 1 times cdot...