【每日刷题】Day96

news2024/9/29 16:41:07

【每日刷题】Day96

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. LCP 44. 开幕式焰火 - 力扣(LeetCode)

2. 1022. 从根到叶的二进制数之和 - 力扣(LeetCode)

3. 563. 二叉树的坡度 - 力扣(LeetCode)

1. LCP 44. 开幕式焰火 - 力扣(LeetCode)

//思路:记数+递归。这个题目之前用C刷过,现在用C++复写一遍。

class Solution {

public:

    void _numColor(TreeNode* root,int* hash,int& ans)

    {

//遍历到空返回

        if(!root)

            return;

//如果当前焰火颜色没有被记录过,则焰火颜色种类+1

        if(!hash[root->val])

            ans++;

//将遍历到的每一个焰火颜色记录,防止重复

        hash[root->val]+=1;

        _numColor(root->left,hash,ans);

        _numColor(root->right,hash,ans);

    }

    int numColor(TreeNode* root)

    {

        int ans = 0;

        int hash[1001] = {0};

        _numColor(root,hash,ans);

        return ans;

    }

};

2. 1022. 从根到叶的二进制数之和 - 力扣(LeetCode)

//思路:递归+模拟栈。

//题目要求我们将树的每一条分支看作一个二进制数字,将所有分支的二进制数字的和返回。

//那么我们如何求得每一条分支的二进制数字呢?

//首先我们想到的是采用先序遍历的方法去遍历每一条分支,但是这里就有一个问题:我们如何区分不同分支代表的二进制数字呢?

//这里我们采用栈的数据结构来解决这个问题,我们画图理解:

//这里又会有一个问题,当我们遍历完当前分支后,如何将栈顶数据推出呢?

//其实非常简单,我们只需要利用形参的特性就行了,看下面的实现代码。

class Solution {

public:

//判断是否为叶子节点

    bool IsLeafNode(TreeNode* root)

    {

        return !root->left&&!root->right;

    }

//注意到,这里的count我用的是形参,因为每次递归都会创建一个新的函数栈帧以存储当前的递归函数,因此每一个count都是独一无二的,比如上一层的count是1,这一层的count是2,当我们当前函数结束返回时,会返回到上一层的函数使用上一层的count也就是1,利用这个特性我们就能很好的实现不断更新栈顶数据。

    void _sumRootToLeaf(TreeNode* root,int* Stack,int count,int& ans)

    {

//如果为空直接返回

        if(!root)

            return;

//不为空则将当前val入栈

        Stack[count] = root->val;

//如果为叶子节点则开始计算

        if(IsLeafNode(root))

        {

//次方

            int flag = 0;

//从栈顶往栈底计算

            for(int i = count;i>=0;i--)

            {

                ans+=pow(Stack[i]*2,flag);

//特殊处理0^0 = 1

                if(!Stack[i]&&!flag)

                    ans-=1;

                flag++;

            }

            return;

        }

//线序遍历

        _sumRootToLeaf(root->left,Stack,count+1,ans);

        _sumRootToLeaf(root->right,Stack,count+1,ans);

    }

    int sumRootToLeaf(TreeNode* root)

    {

        int Stack[1001] = {0};

        int ans = 0;

        _sumRootToLeaf(root,Stack,0,ans);

        return ans;

    }

};

3. 563. 二叉树的坡度 - 力扣(LeetCode)

//思路:先序遍历+求和返回。

class Solution {

public:

    int _findTilt(TreeNode* root,int& ans)

    {

//空节点坡度为0

        if(!root)

            return 0;

//计算左子树的和

        int ret1 = _findTilt(root->left,ans);

//计算右子树的和

        int ret2 = _findTilt(root->right,ans);

//求坡度并相加

        ans+=abs(ret1-ret2);

//返回左右子树的和+当前节点的val

        return ret1+ret2+root->val;

    }

    int findTilt(TreeNode* root)

    {

        int ans = 0;

        _findTilt(root,ans);

        return ans;

    }

};

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

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

相关文章

如何分析KDJ指标?九方智投学习机来帮忙

(九方智投属于九方智投控股有限公司(9636.HK)旗下品牌)      投资中,投资者需要参考的内容有很多,例如KDJ指标,KDJ指标又叫随机指标,是一种相当新颖、实用的技术分析指标&#x…

RJ TextEd 配置简易C/C++ 编译运行环境

前提条件 1.Mingw GCC已经按照且配置环境变量 2.RJ TextEd已安装 步骤 1.配置工具 2.新建 3.填写内容 以GCC为例 4.重复新建G/Run 为了同时支持C和C,有三个工具,gcc g run 5.设置快捷键 注意不能和已有的冲突 验证

ThreadLocal 详解(二)ThreadLocal的原理

前言:Threadlocal的原理涉及两个方面:Threadlocal实例和ThreadlocalMap;这是我画的草图 一.Threadlocal实例 每个Threadlocal对象实际上是一个容器,用于储存线程本地的变量副本。每个线程都可以拥有自己的Threadlocal实例&#xf…

快手如何改ip地址到另外城市

在现今的数字时代,社交媒体平台如快手已成为我们日常生活中不可或缺的一部分。无论是分享生活点滴、观看娱乐视频,还是进行商业推广,快手都为我们提供了广阔的空间。然而,在使用快手的过程中,一些用户可能会遇到需要更…

mapbox-gl 实现房间面生成墙(借助jsts)

文章目录 一、前言二、面生成墙方法示例 一、前言 当我们从室外放大到室内展示室内图层时,我们可能只有房间面的数据,这时要展示房间墙数据,就需要借助工具对房间面进行缓冲,但是数据变动时,我们还要再次进行一下缓冲…

【算法专题】哈希表

哈希表是什么?有什么用?什么时候使用?怎么用? 哈希表是存储数据对的容器;作用在于快速查找某个元素;当我们需要频繁地查找元素时,会考虑使用哈希表;在算法题中,我们通常使…

基于el-table的表格点选和框选功能

开篇 本篇文章旨在实现一个基于el-table的表格点选和框选功能,除此之外,还支持多种模式的切换、自定义勾选日期等。且,该表格后续可能还会持续优化! 功能介绍 表格点选和框选功能(没有点击ctrl键的情况下)…

AI安全新纪元:智能体驱动的网络安全新范式

近日,ISC.AI 2024第十二届互联网安全大会在北京盛大开幕。本次大会以"打造安全大模型,引领安全行业革命"为主题,旨在呼吁行业以大模型重塑安全体系,以保障数字经济的稳健发展。 在企业安全运营与策略实践论坛上&#x…

人工智能时代,数字化工厂如何改革?提升竞争力?

在人工智能时代,数字化工厂通过数据驱动的决策、智能制造、柔性生产、物联网整合以及人机协作,实现生产效率和产品质量的全面提升,并不断创新以保持竞争力。 --题记 在人工智能时代,数字化工厂的改革…

usb摄像头 按钮 静止按钮

usb摄像头 按钮 静止按钮 来分析一个UVC的摄像头的枚举信息 UVC学习:UVC中断端点介绍 https://www.eet-china.com/mp/a269529.html 输入命令lsusb -d 0c45:62f1 -v https://www.miaokee.com/705548.html >Video Class-Specific VS Video Input Header Descrip…

如何恢复未保存/删除的 WPS 文档文件

“如何恢复 WPS 文件?文件已损坏,似乎我之前没有保存过,软件退出,导致文件丢失。有什么方法可以恢复未保存的 WPS 文档吗?” WPS 办公套件是金山软件开发的一款很棒的套件。说实话,它更适合个人和办公室工…

GEE数据——全球固定宽带和移动(蜂窝)网络性能(网速)(2019-2024)

全球固定宽带和移动(蜂窝)网络性能 简介 全球固定宽带和移动(蜂窝)网络性能,分配给缩放级别 16 的网络 mercator 瓷砖(赤道处约 610.8 米乘 610.8 米)。 数据以 Shapefile 格式和 Apache Par…

在那曲,一场别开生面的盛会即将上演

当夏日的暖阳轻抚着那曲的广袤草原,一场展现高原之魂的盛会悄然临近。2024年8月8日,那曲市将举办一场独特的选美比赛——“最美牦牛”评选比赛,邀请各界人士、朋友共襄盛举。 牦牛,被誉为“高原之舟”,它们在这片古老的…

【nginx】解决k8s中部署nginx转发不会自动更新域名解析启动失败的问题

文章目录 1. 问题2.解决办法3.扩展说明3.1 DNS解析阶段划分3.2 问题说明3.2.1 先看/etc/resolv.conf说明3.2.2 针对第一个问题3.2.3 针对第二个问题 【后端】NginxluaOpenResty高性能实践 参考: https://blog.csdn.net/u010837612/article/details/123275026 1. 问…

【Java安全开发全流程解读】Ting-Write-Nuclei V1.0发布 【万户OA-SQL注入1Day-POC】

加微信即可加入WingBy交流群 不存在娱乐化 前言 nuclei-poc一键生成工具市面上很多也很全,比如burp插件生成POC projectdiscovery/nuclei-burp-plugin: Nuclei plugin for BurpSuite (github.com) GUI nuclei-plus/README_zh.md at main Yong-An-Dang/nuclei-p…

七夕情人节送什么礼物?看完这篇你就知道了

在这个充满爱意的时刻,送上一份精心挑选的礼物,不仅能表达你的爱意,更能加深彼此之间的情感联系。然而,选择一份合适的情人节礼物并非易事,因为每个人都有其独特的需求和喜好。如果你还在为情人节送什么礼物而纠结&…

1、.Net UI框架:Xamarin Forms - .Net宣传系列文章

Xamarin.Forms是一个跨平台移动应用开发框架,它允许开发者使用C#和.NET进行一次编码,然后在iOS、Android、macOS和Windows等多个平台上运行。Xamarin.Forms是Xamarin的一部分,而Xamarin是微软的.NET跨平台开发工具集,它提供了一套…

荟萃科技:海外调查问卷的核心在哪?

那就需要知道海外问卷调查是什么? 海外问卷调查是国外的企业为了收集消费者的意见反馈,在市场上发布付费问卷,从而进一步改善他们的产品或者服务。 我们就是回答这些付费问卷来赚取佣金。 核心来了,参与这些调查问卷需要有一定…

防近视台灯什么牌子好?刨析防近视台灯的详细效果

当代不管是学习还是工作,大家处于“卷”的状态,夜晚办公的上班族或是学生党都只多不少。普通的台灯只有最基础的照明作用,长时间下来对眼睛伤害大,严重还会产生眼部疾病。而在这一时刻防近视台灯——护眼灯的出现,成为…

ECCV2024,清华百度提出ReSyncer:可实现音频同步嘴唇动作视频生成。

清华&百度等联合提出了ReSyncer,可以实现更高稳定性和质量的口型同步,而且还支持创建虚拟表演者所必需的各种有趣属性,包括快速个性化微调、视频驱动的口型同步、说话风格的转换,甚至换脸。 ReSyncer的工作原理可以简单理解为…