Nested List Weight Sum

2024-01-04 13:18
文章标签 list nested sum weight

本文主要是介绍Nested List Weight Sum,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这应是很简单最入门的dfs问题,但自己却犯了两个问题,

1. 一开始自己只是想着迭代,根本没意识到是dfs问题

2. 看看注释的那个bug,肉眼没发现,最后只能自己编程发现。。。。

/*** // This is the interface that allows for creating nested lists.* // You should not implement it, or speculate about its implementation* public interface NestedInteger {**     // @return true if this NestedInteger holds a single integer, rather than a nested list.*     public boolean isInteger();**     // @return the single integer that this NestedInteger holds, if it holds a single integer*     // Return null if this NestedInteger holds a nested list*     public Integer getInteger();**     // @return the nested list that this NestedInteger holds, if it holds a nested list*     // Return null if this NestedInteger holds a single integer*     public List<NestedInteger> getList();* }*/
public class Solution {public int depthSum(List<NestedInteger> nestedList) {int sum = 0;if (nestedList == null) {return sum;}List<NestedInteger> list = nestedList;sum = depthSumHelper(list, 1);return sum;}private int depthSumHelper(List<NestedInteger> nestedList, int depth) {if(nestedList == null || nestedList.size() == 0) {return 0;}int sum = 0;for (NestedInteger nestedInteger: nestedList) {if (nestedInteger.isInteger()) {sum = sum + nestedInteger.getInteger() * depth;} else {//sum = depthSumHelper(nestedInteger.getList(), depth + 1);sum = sum + depthSumHelper(nestedInteger.getList(), depth + 1);}}return sum;}}

完整测试

import java.util.LinkedList;
import java.util.List;public class NestedListWeightSum {public static void main(String[] args) {// TODO Auto-generated method stubNestedInteger n1 = new NestedInteger(1, null);NestedInteger n2 = new NestedInteger(1, null);NestedInteger n3 = new NestedInteger(1, null);NestedInteger n4 = new NestedInteger(1, null);List<NestedInteger> sublist1 = new LinkedList<>();sublist1.add(n1);sublist1.add(n2);NestedInteger list1 = new NestedInteger(null, sublist1);List<NestedInteger> sublist2 = new LinkedList<>();sublist2.add(n3);sublist2.add(n4);NestedInteger list2 = new NestedInteger(null, sublist2);NestedInteger n5 = new NestedInteger(2, null);List<NestedInteger> list = new LinkedList<>();list.add(list1);list.add(n5);list.add(list2);NestedListWeightSum NestedListWeightSum = new NestedListWeightSum();NestedListWeightSum.depthSum(list);}public int depthSum(List<NestedInteger> nestedList) {int sum = 0;if (nestedList == null) {return sum;}List<NestedInteger> list = nestedList;sum = depthSumHelper(list, 1);return sum;}private int depthSumHelper(List<NestedInteger> nestedList, int depth) {if(nestedList == null || nestedList.size() == 0) {return 0;}int sum = 0;for (NestedInteger nestedInteger: nestedList) {if (nestedInteger.isInteger()) {sum = sum + nestedInteger.getInteger() * depth;} else {sum = depthSumHelper(nestedInteger.getList(), depth + 1);}}return sum;}
}class NestedInteger {Integer value;List<NestedInteger> list;public NestedInteger (Integer value, List<NestedInteger> list) {this.value = value;this.list = list;}// @return true if this NestedInteger holds a single integer, rather than a nested list.public boolean isInteger() {if (value == null) {return false;} else {return true;}}// @return the single integer that this NestedInteger holds, if it holds a single integer// Return null if this NestedInteger holds a nested listpublic Integer getInteger() {return value;}// @return the nested list that this NestedInteger holds, if it holds a nested list// Return null if this NestedInteger holds a single integerpublic List<NestedInteger> getList() {return list;}
}




这篇关于Nested List Weight Sum的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569448

相关文章

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

最大流=最小割=最小点权覆盖集=sum-最大点权独立集

二分图最小点覆盖和最大独立集都可以转化为最大匹配求解。 在这个基础上,把每个点赋予一个非负的权值,这两个问题就转化为:二分图最小点权覆盖和二分图最大点权独立集。   二分图最小点权覆盖     从x或者y集合中选取一些点,使这些点覆盖所有的边,并且选出来的点的权值尽可能小。 建模:     原二分图中的边(u,v)替换为容量为INF的有向边(u,v),设立源点s和汇点t

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

如何导入sun.misc.BASE64Encoder和sum.misc.BASE64Decoder

右击项目名--->Build Path--->Configure Build Path...--->java Build Path--->Access rules:1 rule defined,added to all librar...   --->Edit --->Add...

List list = new ArrayList();和ArrayList list=new ArrayList();的区别?

List是一个接口,而ArrayList 是一个类。 ArrayList 继承并实现了List。 List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象则保留了A

处理List采用并行流处理时,通过ForkJoinPool来控制并行度失控的问题

在使用parallelStream进行处理list时,如不指定线程池,默认的并行度采用cpu核数进行并行,这里采用ForJoinPool来控制,但循环中使用了redis获取key时,出现失控。具体上代码。 @RunWith(SpringRunner.class)@SpringBootTest(classes = Application.class)@Slf4jpublic class Fo

Java中集合类Set、List和Map的区别

Java中的集合包括三大类,它们是Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList,Map的实现类主要有HashMap和TreeMap。那么它们有什么区别呢? Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对

List对象过滤

List materialInventoryList = materialInventories.stream().filter(mat -> mat.getQty().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList()); stream().filter()方法可以过滤掉List的数据

c++stack和list 介绍

stack介绍 堆栈是一种容器适配器,专门设计用于在 LIFO 上下文(后进先出)中运行,其中元素仅从容器的一端插入和提取。 堆栈作为容器适配器实现,容器适配器是使用特定容器类的封装对象作为其基础容器 的类,提供一组特定的成员函数来访问其元素。元素从特定容器的 “back” 推送或弹出,这称为堆栈的顶部。 stack接口 stack() 构造空的栈 empty() 检测stack是否为