九章演算法 中興面試題 巢狀列表的加權和II

2021-10-20 20:29:02 字數 1110 閱讀 9065

描述

給乙個巢狀的整數列表, 返回列表中所有整數由它們的深度加權後的總和. 每乙個元素可能是乙個整數或乙個列表(其元素也可能是整數或列表)。

注意,在之前的題目巢狀列表的加權和中,從根結點到葉子結點,深度權重是遞增的。在巢狀列表的加權和ii中,深度權重的定義是自下而上的,也就是說,最底層葉子結點的深度權重是1 ,根結點的深度權重最大。

lintcode 領扣

樣例1

輸入: nestedlist = [[1,1],2,[1,1]] 

輸出: 8

解釋:

四個深度為1的1,乙個深度為2的2

樣例2

輸入: nestedlist = [1,[4,[6]]] 

輸出: 17

解釋:

乙個深度為3的1, 乙個深度為2的4,和乙個深度為3的6。1*3 + 4*2 + 6*1 = 17

題解:

bfs遍歷列表每一層,如果是數字,則加到當前這一層的和當中,反之,是列表,則進入佇列,每一層遍歷完,才進入下一層,最後將每一層的數值加到結果當中即可。

public

class

solution

// initialize

intpresum=0

;int

result=0

;// put each item of list into the queue

queue

<

nestedinteger

>

queue

=new

linkedlist

<>(

nestedlist

);while

(!queue

.isempty

())else

}presum

+=levelsum

;result

+=presum;}

return

result;}

}

更多題解參考:九章演算法

九章演算法 Google面試題 內積

描述 給定長度為n的a陣列,長度為k的b陣列 你可以從a陣列裡取k個數 規則如下 即每次可以從a陣列的最左邊或者最右邊取走乙個數,取走的數從陣列中移除 將取出的ai按取出的順序組成c陣列 求b與c的內積最大值 b與c內積為 i 0k 1bi ci 解釋1 a 1,4,3,2,5 b 1,2,3,4 ...

九章演算法面試題32 小球排序

有紅黃藍三色的小球若干排成一列,這些小球進行排序,請使用盡量少的空間和時間。假設順序為紅色黃色藍色。用兩根指標從頭開始遍歷,第一根指標遇到非紅色時停下,如果第二根指標找到第一根指標之後的第乙個紅色停下,交換兩根指標所指顏色。重複上述過程。直到第二根指標找不到任何紅色。此時第一根指標到最後都是黃色或藍...

九章演算法面試題33 陣列波峰

乙個陣列a 1.n 假設陣列中沒有任何相鄰兩數相等,滿足a 1 n。a i 被稱為波峰,當且僅當a i a i 1 並且a i a i 1 請找到陣列中的乙個波峰。假設陣列中存在相鄰相等的數,該怎麼做?根據條件a 1 a n 可知a中一定存在波峰。用二分法,選擇中點mid,如果a mid 是波峰,則...