LeetCode 339. 嵌套列表权重和
题目描述
给定一个字符串 s ,找出 至多 包含两个不同字符的最长子串 t ,并返回该子串的长度。
示例 1:
输入: “eceba”
输出: 3
解释: t 是 “ece”,长度为3。
1 <= nestedList.length <= 50
嵌套列表中整数的值在范围 [-100, 100] 内
任何整数的最大 深度 都小于或等于 50
一、解题关键词
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
/**
* // This is the interface that allows for creating nested lists.
* // You should not implement it, or speculate about its implementation
* public interface NestedInteger {
* // Constructor initializes an empty nested list.
* public NestedInteger();
*
* // Constructor initializes a single integer.
* public NestedInteger(int value);
*
* // @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();
*
* // Set this NestedInteger to hold a single integer.
* public void setInteger(int value);
*
* // Set this NestedInteger to hold a nested list and adds a nested integer to it.
* public void add(NestedInteger ni);
*
* // @return the nested list that this NestedInteger holds, if it holds a nested list
* // Return empty list if this NestedInteger holds a single integer
* public List<NestedInteger> getList();
* }
*/
class Solution {
//整数的总和。
public int depthSum(List<NestedInteger> nestedList) {
return depthSum(nestedList,1);
}
int depthSum(List<NestedInteger> nestedList,int depth){
int sum = 0;
for(NestedInteger num : nestedList){
if(num.isInteger()){
sum += num.getInteger() * depth;
}else{
sum += depthSum(num.getList(),depth + 1);
}
}
return sum;
}
}
2.知识点
递归