力扣(LeetCode)364. 加权嵌套序列和 II(2022.12.31)

news2024/9/27 9:27:39

给你一个整数嵌套列表 nestedList ,每一个元素要么是一个整数,要么是一个列表(这个列表中的每个元素也同样是整数或列表)。

整数的 深度 取决于它位于多少个列表内部。例如,嵌套列表 [1,[2,2],[[3],2],1] 的每个整数的值都等于它的 深度 。令 maxDepth 是任意整数的 最大深度 。

整数的 权重 为 maxDepth - (整数的深度) + 1 。

将 nestedList 列表中每个整数先乘权重再求和,返回该加权和。

示例 1:
在这里插入图片描述
输入:nestedList = [[1,1],2,[1,1]]
输出:8
解释:4 个 1 在深度为 1 的位置, 一个 2 在深度为 2 的位置。
11 + 11 + 22 + 11 + 1*1 = 8

示例 2:

在这里插入图片描述

输入:nestedList = [1,[4,[6]]]
输出:17
解释:一个 1 在深度为 3 的位置, 一个 4 在深度为 2 的位置,一个 6 在深度为 1 的位置。
13 + 42 + 6*1 = 17

提示:

1 <= nestedList.length <= 50
嵌套列表中整数的值在范围 [-100, 100]
任意整数的最大 深度 小于等于 50

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/nested-list-weight-sum-ii

方法一:DFS

C++提交内容:

/**
 * // This is the interface that allows for creating nested lists.
 * // You should not implement it, or speculate about its implementation
 * class NestedInteger {
 *   public:
 *     // Constructor initializes an empty nested list.
 *     NestedInteger();
 *
 *     // Constructor initializes a single integer.
 *     NestedInteger(int value);
 *
 *     // Return true if this NestedInteger holds a single integer, rather than a nested list.
 *     bool isInteger() const;
 *
 *     // Return the single integer that this NestedInteger holds, if it holds a single integer
 *     // The result is undefined if this NestedInteger holds a nested list
 *     int getInteger() const;
 *
 *     // Set this NestedInteger to hold a single integer.
 *     void setInteger(int value);
 *
 *     // Set this NestedInteger to hold a nested list and adds a nested integer to it.
 *     void add(const NestedInteger &ni);
 *
 *     // Return the nested list that this NestedInteger holds, if it holds a nested list
 *     // The result is undefined if this NestedInteger holds a single integer
 *     const vector<NestedInteger> &getList() const;
 * };
 */
 
class Solution {
public:
    int depthSumInverse(vector<NestedInteger>& nestedList) {
        int res = 0;
        vector<vector<int>> integersListByDepth;
        for (auto& nl : nestedList) {
            dfs(nl, 0, integersListByDepth);
        }

        int N = integersListByDepth.size();
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < integersListByDepth[i].size(); j++) {
                res += integersListByDepth[i][j] * (N - i);
            }
        }

        return res;
    }

private:
    void dfs(NestedInteger& ni, int depth, vector<vector<int>>& integersListByDepth) {
        if (depth == integersListByDepth.size()) {
            integersListByDepth.push_back(vector<int>());
        }

        if (ni.isInteger()) {
            integersListByDepth[depth].push_back(ni.getInteger());
        } else {
            for (auto& nl : ni.getList()) {
                dfs(nl, depth + 1, integersListByDepth);
            }
        }
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/131101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回归原型网络代码episode数据加载

一般PyTorchPyTorchPyTorch加载数据的固定格式是: dataset MyDataset() : 构建DatasetDatasetDataset对象 dataLoader DataLoader(dataset) #通过DataLoaderDataLoaderDataLoader来构造迭代对象. num_epoches 100 for epoch in range(num_epoches): #逐步迭代数据 for img,l…

元宇宙产业委评选2022全球元宇宙十大事件(含国外元宇宙五大事件)

中国移动通信联合会元宇宙产业工作委员会&#xff08;简称为&#xff1a;元宇宙产业委&#xff09; 评选2022全球元宇宙十大事件&#xff08;含国外元宇宙五大事件&#xff09; 1、1月5日&#xff0c;CES 2022上&#xff0c;英伟达&#xff08;NVIDIA&#xff09;宣布旗下元宇…

【django】HttpRequest对象的属性和路由补充

文章目录一、HttpRequest对象的常用属性1、request.GET&#xff1a;获取查询字符串参数案例:特别注意&#xff1a;2、request.POST&#xff1a;post请求数据&#xff0c;只能获取表单参数3、request.body&#xff1a;请求body&#xff0c;响应结果为字节类型4、request.method&…

一文搞懂G1垃圾回收器

G1是从JDK9之后的默认垃圾回收器&#xff0c;其功能强大&#xff0c;性能优异&#xff0c;不过目前市面的材料不算多&#xff0c;很多都是抄来抄去&#xff0c;讲得也不太清楚。经过仔细阅读oracle官网以及相关的材料&#xff0c;从整体上梳理了G1的过程&#xff0c;希望这一文…

数据库设计规范详解

对于后端开发人员&#xff0c;建表是个基础活&#xff0c;是地基&#xff0c;如果地基不大牢固&#xff0c;后面在程序开发过程中会带来很多麻烦&#xff0c;在建表的时候不注意细节&#xff0c;等后面系统上线之后&#xff0c;表的维护成本变得非常高&#xff0c;而且很容易踩…

基数排序分析

&#x1f954; 原理介绍&#xff1a; [排序算法] 基数排序 (C) - Amαdeus - 博客园 前述的各类排序方法都是建立在关键字比较的基础上&#xff0c;而基数排序是一种非比较型整数排序算法。它的基本思想是将整数按位数切割成不同的数字&#xff0c;然后按每个位数分别比较。 …

单片机基础知识之定时计数器和寄存器

目录 一、定时计数器 二、什么是寄存器 三、定时器如何定时10毫秒 四、定时器编程前寄存器配置计划 五、编程定时器控制LED每隔一秒亮灭 一、定时计数器 1、定时计数器的概念引入 定时器和计数器&#xff0c;电路一样 定时或者计数的本质就是让单片机某个部件数数 当定…

Linux基础------高级IO

文章目录阻塞IO非阻塞IO信号驱动异步IO多路转接&#xff08;核心终点&#xff09;实际上 IO “等” 拷贝 等什么呢&#xff1f; -----> 等待的是内核将数据准备好。 拷贝-------> 数据从内核考到用户 IO话题&#xff1a; 无非就是 1 &#xff0c; 改变等的方式 2 &…

Linux中编译带kafka模块的搜狗workflow开源库

workflow依赖的第三方库 openssl https://github.com/openssl/openssl apt install libssl-dev zlib https://github.com/madler/zlib git clone https://github.com/madler/zlib.git./configuremake -j4 make install lz4 (版本>1.7.5) https://github.com/lz4/lz4 …

C语言:预处理(2)

宏通常被用于执行简单的运算。 宏相比于函数的优势&#xff1a; 1.用于调用函数和从函数返回的代码可能比实际执行这个小型计算工作所需要的时间更多。所以宏比函数在程序的规模和速度方面更胜一筹。 2.更为重要的是函数的参数必须声明为特定的类型。所以函数只能在类型合适的…

Diffusion Model原理详解及源码解析

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

KubeSphere中间件部署

目录 &#x1f9e1;应用部署总览 &#x1f9e1;中间件部署 MySQL有状态副本集 &#x1f360;KubeSphere创建配置集 &#x1f360;KubeSphere创建存储卷 &#x1f360;KubeSphere创建有状态副本集 &#x1f360;集群访问 &#x1f49f;这里是CS大白话专场&#xff0c;让枯…

Entity Framework Core 代码自动化迁移

简述 文章内容基于&#xff1a;.NET6 Entity Framewor kCore 7.0.* 使用 EF Core 进行 Code First 开发的时候&#xff0c;肯定会遇到将迁移更新到生产数据库这个问题&#xff0c;大多数都是使用命令生成迁移 SQL&#xff0c;然后使用 SQL 脚本将更新迁移到生产数据库的方式&a…

【一起从0开始学习人工智能0x03】文本特征抽取TfidVectorizer

文章目录文本特征抽取TfidVectorizerTfidVecorizer--------Tf-IDFTF-IDF------重要程度文本特征抽取TfidVectorizer 前几种方法的缺点&#xff1a;有很多词虽然没意义&#xff0c;但是出现次数很多&#xff0c;会影响结果&#xff0c;有失偏颇------------关键词 TfidVecoriz…

一篇文章带你搞懂nodeJs环境配置

1、nodeJs下载地址&#xff0c;这里可以选择你想要的版本&#xff0c;我这里以14.15.1为例 2、下载完成后&#xff0c;直接傻瓜式安装即可。 3、打开命令行&#xff08;以管理员身份打开&#xff09;,输入node -v&#xff0c;出现以下版本号&#xff0c;代表node成功安装 4、在…

html+css设计两个摆动的大灯笼

实现效果 新年马上就要到了&#xff0c;教大家用htmlcss设计两个大灯笼&#xff0c;喜气洋洋。 html代码&#xff1a; html代码部分非常简单&#xff0c;将一个灯笼分成几部分进行设计&#xff0c;灯笼最上方部分&#xff0c;中间的线条部分和最下方的灯笼穗。组合在一起就…

docker系列教程:docker图形化工具安装及docker系列教程总结

通过前面的学习,我们已经掌握了docker-compose容器编排及实战了。高级篇也算快完了。有没有相关,我们前面学习的时候,都是通过命令行来操作docker的,难道docker就没有图形化工具吗?答案是肯定有的。咱们本篇就来讲讲docker图形化工具及使用图形化工具安装Nginx及docker系列…

读书系列2022(下)读书纪录片

目录 一、认知类 二、纪录片 一、认知类 《蓝海战略》&#xff1a; 让你(企业/个人)在竞争中产生错位竞争&#xff0c;获得优势 《认知盈余》&#xff1a;“人们实际上很喜欢创造并分享”&#xff0c; 参与是一种行为 将人们的自由时间和特殊才能汇聚在一起&#xff0c;共同…

移动Web【字体图标、平面转换[位移,旋转,转换原点,多重转换]、渐变】

文章目录一、字体图标1.1 图标库1.2 下载字体包&#xff1a;1.3 使用字体图标&#xff1a;1.4 使用字体图标 – 类名&#xff1a;1.5 案例&#xff1a;淘宝购物车1.6 上传矢量图&#xff1a;二、平面转换2.1 位移2.1 位移-绝对定位居中2.3 案例2.4 旋转2.5 转换原点2.6 多重转换…

2022年终总结:不一样的形式,不一样的展现

Author&#xff1a;AXYZdong 硕士在读 工科男 有一点思考&#xff0c;有一点想法&#xff0c;有一点理性&#xff01; 定个小小目标&#xff0c;努力成为习惯&#xff01;在最美的年华遇见更好的自己&#xff01; CSDNAXYZdong&#xff0c;CSDN首发&#xff0c;AXYZdong原创 唯…