这个题做了一个多小时,好傻逼。

显而易见计算的话必须知道当前层是第几层,因为要乘权重,想要知道是第几层又必须知道最高是几层。。

用了好久是因为想ONE PASS,尝试过遍历的时候构建STACK,通过和顶端的距离来判定层数,但是其实最后POP的过程相当于又遍历了一次。而且STACK无法O(1) access,换成LIST需要手动来维持顺序。

最终放弃了,看答案。。发现都是先遍历一次得到最高权重。。。。。。仔细想想似乎1-PASS可以用MAP实现,但是每次发现新高权重,就必须更新以前所有的,貌似没必要1PASS。。。

如果不要求1PASS,先遍历算权重的话,这个题就很直白了。。

public class Solution
{int depth;public int depthSumInverse(List<NestedInteger> nestedList) {if(nestedList.size() == 0) return 0;depth = getDepth(nestedList);return helper(nestedList,1);}public int getDepth(List<NestedInteger> list){int res = 1;for(NestedInteger n: list)if(!n.isInteger()) res = Math.max(res,getDepth(n.getList())+1);return res;}public int helper(List<NestedInteger> list, int curLevel){int res = 0;for(NestedInteger i: list)if(i.isInteger()){res += (depth+1-curLevel)*i.getInteger();}else{res +=helper(i.getList(),curLevel+1);}return res;}}


二刷。

这个题也有印象,一刷的时候尝试1-PASS的DFS,根本不可能。

BFS倒是可以,模拟level order traversal。很重要的一点就是要保留积累值,代码里我用的cum= =baby cum..cum..

重点是。。每到新的一层,返还结果都加一遍积累值,就可以满足权重weighted的关系。最早的我想法乘,DFS找到权重然后乘第几层,但是实际上这里反倒是返璞归真,加法最适合这种方式,而乘法根本难以表示这种关系。。

总共N层,最上面的一层作为积累制存在的N次,总共被加到res里N次,正好是这个题的意思。。

public class Solution {public int depthSumInverse(List<NestedInteger> nestedList) {if (nestedList.size() == 0) return 0;int res = 0;int cum = 0;List<NestedInteger> tempList = new LinkedList<>();while (true) {for (NestedInteger i : nestedList) {if (i.isInteger()) {cum += i.getInteger();} else {tempList.addAll(i.getList());}}res += cum;if (tempList.size() == 0) {return res;} else {nestedList = tempList;tempList = new ArrayList<>();}}}
}

所以结果是可以1-pass的。

DFS就先走一遍,找到最深的层数,然后递归并添加一个当前参数代表当前层数,层数差表示他出现的次数。
意淫完回头一看一刷,就是这么做的,我真是毫无长进。。。

转载于:https://www.cnblogs.com/reboot329/p/5944469.html

364. Nested List Weight Sum II相关推荐

  1. 364. Nested List Weight SumII

    题目: Given a nested list of integers, return the sum of all integers in the list weighted by their de ...

  2. LeetCode 167. Two Sum II - Input array is sorted--Python解法

    题目地址:Two Sum II - Input array is sorted - LeetCode Given an array of integers that is already sorted ...

  3. Digit Sum II( ABC044ARC060)

    问题 G: Digit Sum II 时间限制: 1 Sec  内存限制: 128 MB 提交: 36  解决: 11 [提交][状态][讨论版][命题人:admin] 题目描述 For intege ...

  4. [LeetCode]113.Path Sum II

    [题目] Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the giv ...

  5. Lintcode: k Sum II

    Given n unique integers, number k (1<=k<=n) and target. Find all possible k integers where the ...

  6. LeetCode_Path Sum II

    一.题目 Path Sum II Total Accepted: 46778 Total Submissions: 175830My Submissions Given a binary tree a ...

  7. 113. Path Sum II

    /** 113. Path Sum II * 11.18 By Mingyang* 典型的backtracking,不过注意,这里的值可能是负数,所以不能用sum小于0来做任何判断* 1.长度标准:无 ...

  8. leetcode 112. Path Sum, 113. Path Sum II | 112,113. 路径总和 I, II(Java)

    题目 https://leetcode.com/problems/path-sum/ https://leetcode.com/problems/path-sum-ii/ 题解 简单的遍历二叉树,不解 ...

  9. Leetcode: mimimum depth of tree, path sum, path sum II

    思路: 简单搜索 总结: dfs 框架 1. 需要打印路径. 在 dfs 函数中假如 vector 变量, 不用 & 修饰的话就不需要 undo 2. 不需要打印路径, 可设置全局变量 ans ...

最新文章

  1. springmvc 将post转换为delete,put
  2. Python 2.7 学习笔记 内置语句、函数、标准库
  3. 腾讯开源首个医疗AI项目,业内首个3D医疗影像大数据预训练模型
  4. linux kill tl进程,【linux】kill ;杀死某一用户下的所有进程
  5. Eclipse for Android 开发环境搭建及各种坑
  6. 关于游戏开发中时间性能统计工具本身overhead较高的问题
  7. CRM WebClient UI里标准configuration和custom configuration区别
  8. stack overflow at line
  9. 【渝粤教育】国家开放大学2018年春季 0529-21T高级英语阅读(1) 参考试题
  10. Windows Forms、MFC、WTL、WxWidgets、Qt、GTK综合比较
  11. 微软关闭音乐服务器,微软关闭Zune音乐服务 Zune播放器变为MP3
  12. Linux 命令(38)—— fdisk 命令
  13. 【java笔记】线程(2):多线程的原理
  14. linux命令ftps,Linux下ftp+ssl实现ftps
  15. ul1581标准_UL1581标准中文版-2019电线电缆和软线的UL中文版标准.pdf
  16. 制作一套适用于Oracle数据库的县及县以上行政区划数据
  17. 【论文阅读】查询搜索中的安全和效率权衡(ACM 10.1145)
  18. java毕业设计家居体验平台的设计与实现Mybatis+系统+数据库+调试部署
  19. spark SQL自定义函数:
  20. linux开发板tftp 搭建,iTOP-i.MX6ULL开发板-Tftp烧写和Nfs启动

热门文章

  1. 有关session的登录注销的一个小例子
  2. Android中自定义View的研究 -- 在XML中引用自定义View
  3. 现实工程中常用到的C语言函数总结(不断更新)
  4. 比特币多重签名机制使用篇
  5. 数据结构: 线索化二叉树
  6. 为什么S/4HANA的销售订单创建会触发生产订单的创建
  7. Django 前后台的数据传递
  8. JVM内存参数详解以及配置调优
  9. jquery判断div滚动条到底部
  10. Impala与Hive的比较