?LeetCode刷題實(shí)戰(zhàn)364:加權(quán)嵌套序列和 II
示例
示例 1:
輸入: [[1,1],2,[1,1]]
輸出: 8
解釋: 四個(gè) 1 在深度為 1 的位置, 一個(gè) 2 在深度為 2 的位置。
示例 2:
輸入: [1,[4,[6]]]
輸出: 17
解釋: 一個(gè) 1 在深度為 3 的位置, 一個(gè) 4 在深度為 2 的位置,一個(gè) 6 在深度為 1 的位置。13 + 42 + 6*1 = 17。
解題
class Solution {
public:
int depthSumInverse(vector<NestedInteger>& nestedList) {
int res=0;
int cur_weight=0;
queue<vector<NestedInteger>> q;//廣度優(yōu)先
q.push(nestedList);//初始化
while(!q.empty()){//終止條件
//獲得當(dāng)前層的元素的數(shù)量
int cur_layer=q.size();
//遍歷該層元素
while(cur_layer--){
//獲得各個(gè)元素
vector<NestedInteger> cur_nest=q.front();
q.pop();
//對(duì)當(dāng)前元素的各個(gè)元素進(jìn)行判斷
for(int i=0;i<cur_nest.size();++i){
//若是單個(gè)數(shù)字,則累加統(tǒng)計(jì)變量中
if(cur_nest[i].isInteger()){
cur_weight+=cur_nest[i].getInteger();
}
//若不是單個(gè)數(shù)字,則將其作為新的序列壓入到隊(duì)列中
else{
q.push(cur_nest[i].getList());
}
}
}
//累加之前的值
res+=cur_weight;
}
return res;
}
};
