LeetCode刷题实战364:加权嵌套序列和 II
示例
示例 1:
输入: [[1,1],2,[1,1]]
输出: 8
解释: 四个 1 在深度为 1 的位置, 一个 2 在深度为 2 的位置。
示例 2:
输入: [1,[4,[6]]]
输出: 17
解释: 一个 1 在深度为 3 的位置, 一个 4 在深度为 2 的位置,一个 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;//广度优先
q.push(nestedList);//初始化
while(!q.empty()){//终止条件
//获得当前层的元素的数量
int cur_layer=q.size();
//遍历该层元素
while(cur_layer--){
//获得各个元素
vector<NestedInteger> cur_nest=q.front();
q.pop();
//对当前元素的各个元素进行判断
for(int i=0;i<cur_nest.size();++i){
//若是单个数字,则累加统计变量中
if(cur_nest[i].isInteger()){
cur_weight+=cur_nest[i].getInteger();
}
//若不是单个数字,则将其作为新的序列压入到队列中
else{
q.push(cur_nest[i].getList());
}
}
}
//累加之前的值
res+=cur_weight;
}
return res;
}
};