劍指offer 構建乘積陣列

2021-08-19 09:55:44 字數 806 閱讀 9732

描述題目:給定乙個陣列a [0,1,…,n-1],請構建乙個陣列b [0,1,…,n-1],其中乙中的元素b [i ] = a [0] * a [1] * … * a [i-1] * a [1 + 1] * … * a [n-1]。不能使用除法。

class solution ;

vector

res(n,0);

res[0] = a[1];

res[1] = a[0];

int multi = a[0] * a[1];

for(int i=2;ifor(int j=0;jreturn res;

}};//整體時間複雜度為o(n*n)

/**

* 思路:劍指的思路,可以觀察b和a的規律

b0 = 1 a1 a2 ... a(n-1)

b1 = a0 1 a2 ... a(n-1)

b2 = a0 a1 1

... a(n-1)

...b(n-1) = a0 a1 a2 ...

1 * 由1連成的對角線把矩陣分成了上三角和下三角,可以根據規律先把下三角算出來,然後再對稱得出完整的b

*/class solution

//合併上三角形

int temp = 1;

for(int i = len-2; i >= 0; i--)

return b;

}};//這只需要o(n)的時間複雜度明顯提公升了

劍指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 i 可以按公式給出的方法,乙個個求解。時間複雜度為o n 2 解法二 將b i 的求解分為兩...

《劍指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 不能使用除法。解法 方法1 暴力解法。1 假設a 1,2,3 那麼b 0 a 1 a 2 b 1 a 0 a 2 b 2 a 0 a 1 2 可以發現規律,b ...

劍指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 這裡計算前向乘積...