javascript - 嵌套列表权重总和算法问题
问题描述
我正在尝试解决这个问题“嵌套列表权重总和”:https ://leetcode.com/problems/nested-list-weight-sum/description/
问题:
给定列表 [[1,1],2,[1,1]],返回 10。(深度 2 处有四个 1,深度 1 处有一个 2)
这是我的解决方案。
var depthSum = function (nestedList, sum=0, depth=1) {
nestedList.forEach((val) => {
if (Array.isArray(val)) {
depth = depth+1;
return depthSum(val, sum, depth);
} else {
sum += val * depth;
}
});
return sum;
};
不知道我错过了什么。当我调试它时,在某些时候我得到了答案,但return sum
没有启动,我得到了不同的答案。
有人可以指出我的错误吗?
解决方案
您可以通过返回每个级别的总和来使用Array#reduce
和省略sum
每个级别。
function depthSum(nestedList, level = 1) {
return nestedList.reduce((sum, val) =>
sum + (Array.isArray(val)
? depthSum(val, level + 1)
: level * val),
0);
};
console.log(depthSum([[1, 1], 2, [1, 1]]));
推荐阅读
- spring - 如何在 itemProcessor 中接收 application.properties 值
- java - JAVA_HOME 不适用于 sudo mvn
- keras - 构建多类语义分割的u-net模型
- python - Django:视图调用另一个模板(分页)
- python - 计算每个集群的时间序列数据的季节性和趋势
- php - Laravel 5.6 在路由问题中获取用户
- maps - 哪些 geopandas 数据集(地图)可用?
- api - 收敛 API 错误代码 4000
- oracle - BI-Publisher 11g - 使用不同的数据源创建报告
- sql - 在 SSRS 中使用日期选择器中的值