一道關於拆分思路的演算法題

2021-06-05 19:33:07 字數 543 閱讀 7854

2012-04-15 wcdj

1912.04.14 titanic, 100 years later

題目:兩個陣列a[n],b[n],其中a[n]的各個元素值已知,現給b[i]賦值,b[i] = a[0]*a[1]*a[2]...*a[n-1]/a[i];

要求:

1. 不准用除法運算;

2. 除了迴圈計數值,a[n],b[n]外,不准再用其他任何變數(包括區域性變數,全域性變數等);

3. 滿足時間複雜度o(n),空間複雜度o(1);

一種思路:

通過分別拆分成[a[0],a[i-1]]和[a[i+1],a[n-1]]兩部分來計算陣列b的每個元素的值,即把a[i]的值扣除。

b[0] = 1;

for (int i = 1; i < n; i++)

b[0] = 1;

for (i = n-2; i > 0; i--)

b[0] *= a[1];

參考:

here

一道演算法題,看看大家的思路

題目描述 有31,41,59,26,53,58,97,93,23,84十個數。sum n,m 表示從第n個數到到第m個數的和。例如 sum 2,3 41 59 18。問 最大的和是多少?對應的n和m是多少?這個題目並不難,實現的方法多種多樣。最壞的演算法,遍歷所有的情況,求出最大和。我在這兒提乙個演...

記一道毫無思路的演算法題

今天賢內給了我一道很實際的演算法題,把我徹底難住了,實在想不出來,於是寫此博文以記之。背景是這樣的,現在有乙個付款明細的excel,裡面有為哪個發票,哪個公司應付多少錢的明細,明細資料是62條,現在知道我們已經付出的金額為sum,請問到底哪些發票是已付款的。這是62條明細資料 653165.00 3...

一道關於排序的演算法題

題目 給定乙個無序陣列a,一直這個陣列a中的任意乙個元素所在的位置離其最終排序後的位置相差的距離不會超過k。即排序前a i 在位置i,那麼在排序後該元素的位置會在 i k,i k 這個範圍內。現在要求給出乙個演算法使得演算法盡量高校。解析 這裡就不多說了,直接給自己的解法吧。利用乙個大小為k 1的最...