【每日刷题】Day63

news2024/11/17 5:37:20

【每日刷题】Day63

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 414. 第三大的数 - 力扣(LeetCode)

2. 2265. 统计值等于子树平均值的节点数 - 力扣(LeetCode)

3. 1302. 层数最深叶子节点的和 - 力扣(LeetCode)

1. 414. 第三大的数 - 力扣(LeetCode)

//思路:排序+遍历。将数组排为升序后进行双指针遍历,使用一个flag遍历判断是否遍历到第三大数或是否有第三大数,两个指针指向元素不相同flag++,当flag==3时说明遍历到了第三大数,break;当走出循环后flag!=3,说明没有第三大数,返回最大的数

//插入排序

void InsertSort(int* arr,int size)

{

    for (int i = 0; i < size-1; i++)

    {

        int end = i + 1;

        int tmp = arr[end];

        while (end - 1 >= 0)

        {

            if (tmp > arr[end - 1])

            {

                arr[end] = arr[end - 1];

            }

            else

            {

                break;

            }

            end--;

        }

        arr[end] = tmp;

    }

}



 

//希尔排序

void ShellSort(int* arr, int size)

{

    int gap = size;

    while (gap > 1)

    {

        gap = gap / 3 + 1;

        for (int i = 0; i < size - gap; i++)

        {

            int end = i + gap;

            int tmp = arr[end];

            while (end - gap >= 0)

            {

                if (tmp > arr[end - gap])

                {

                    arr[end] = arr[end - gap];

                }

                else

                {

                    break;

                }

                end -= gap;

            }

            arr[end] = tmp;

        }

    }

    InsertSort(arr, size);

}

int thirdMax(int* nums, int numsSize)

{

    ShellSort(nums,numsSize);//排序

    int flag = 1;

    double ans = 0;

    for(int i = 0;i<numsSize-1;i++)

    {

        if(nums[i]!=nums[i+1])//遇到不相同的数

            flag++;

        if(flag==3)

        {

            ans = nums[i+1];

            break;

        }

    }

    if(flag!=3)

        ans = nums[0];

    return (int)ans;

}

2. 2265. 统计值等于子树平均值的节点数 - 力扣(LeetCode)

//思路:深度优先遍历。把每一个根节点看为一棵树,求出该根节点左右子树节点个数以及左右子树结点值的和,计算平均值,判断是否为当前结点的值。

//求树的节点个数

int BinaryTreeTreeSize(struct TreeNode* root)

{

    if (root == NULL)

        return 0;

    return 1 + BinaryTreeTreeSize(root->left) + BinaryTreeTreeSize(root->right);

}

int _averageOfSubtree(struct TreeNode* root,int* ans)

{

    if(!root)

        return 0;

    int left = _averageOfSubtree(root->left,ans);//左子树结点值的和

    int right = _averageOfSubtree(root->right,ans);//右子树结点值的和

    int num = BinaryTreeTreeSize(root);//求出该树节点个数

    if((left+right+root->val)/num==root->val)//判断平均值是否=root->val

        (*ans)++;

    return left+right+root->val;//返回当前子树结点值的和

}


 

int averageOfSubtree(struct TreeNode* root)

{

    int ans = 0;

    _averageOfSubtree(root,&ans);

    return ans;

}

3. 1302. 层数最深叶子节点的和 - 力扣(LeetCode)

//思路:深度优先遍历。求出二叉树最大深度,遍历二叉树,当遇到叶子结点时判断其是否是最深的叶子节点。是,则让结果+=root->val;不是,则直接返回,如果遍历到空,也返回。

//二叉树最大深度

int BinaryTreeHigh(struct TreeNode* root)

{

    if(!root)

        return 0;

    int left = BinaryTreeHigh(root->left);

    int right = BinaryTreeHigh(root->right);

    return 1+(left>right?left:right);

}


//判断是否为叶子节点

bool IsLeafNode(struct TreeNode* root)

{

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

}

void _deepestLeavesSum(struct TreeNode* root,int high,int* ans)

{

    if(!root||(IsLeafNode(root)&&high!=1))//如果遍历到NULL或不是最深的叶子结点,直接返回

        return;

    if(IsLeafNode(root)&&high==1)//是最深的叶子节点,结果+=root->val

        (*ans)+=root->val;

    _deepestLeavesSum(root->left,high-1,ans);

    _deepestLeavesSum(root->right,high-1,ans);

}

int deepestLeavesSum(struct TreeNode* root)

{

    int high = BinaryTreeHigh(root);

    int ans = 0;

    _deepestLeavesSum(root,high,&ans);

    return ans;

}

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

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

相关文章

我国间二甲苯零售规模逐渐扩大 进口量有所下滑

我国间二甲苯零售规模逐渐扩大 进口量有所下滑 间二甲苯&#xff08;MX&#xff09;又称为1,3-二甲苯&#xff0c;是苯的两个氢基被两个甲基取代后形成的一种有机化合物。间二甲苯的化学方程式为C8H10&#xff0c;多表现为一种无色透明的液体&#xff0c;不溶于水&#xff0c;但…

人工智能的社会应用:深刻变革的新浪潮

人工智能的社会应用&#xff08;语言文本方面&#xff09; 人工智能在社会应用中的广泛运用体现在多个领域&#xff0c;特别是在语音和文本处理方面。以下是这些技术的一些扩展&#xff1a; 1. 文本翻译&#xff1a; 谷歌翻译&#xff1a;利用深度学习模型&#xff0c;支持100多…

ARM功耗管理框架之SCP

安全之安全(security)博客目录导读 目录 一、功耗管理框架中的SCP 二、SCP的示例 三、SCP固件 四、SCP启动流程 五、SCP的memory map 六、SCP与AP的通信 思考:功耗管理框架?SCP?PPU?LPI?之间的关系?如何配合? 一、功耗管理框架中的SCP 二、SCP的示例

【Python】使用OpenCV特征匹配检测图像中的【特定水印】

如果没有方向 往哪里走都是前方 做自己的光 不需要多亮 曾受过的伤 会长出翅膀 大雨冲刷过的天空会更加明亮 流过泪的眼睛也一样 做自己的光 悄悄的发亮 逆风的方向 更容易飞翔 世界怎样在于你凝视它的目光 那未曾谋面过的远方 或许就在身旁 &#x1f3b5…

Intel 8080接口与Motorola 6800接口定义与应用

本文介绍Intel 8080接口与Motorola 6800接口定义与应用。 Intel 8080接口与Motorola 6800接口是常用的并行总线接口&#xff0c;在MCU与外设直接的接口中经常用到&#xff0c;如MCU与LCD接口&#xff0c;MCU与FPGA之间的接口。本文介绍Intel 8080接口与Motorola 6800接口定义&…

Springboot的小型超市商品展销系统-计算机毕业设计源码01635

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

通用大模型VS垂直大模型,相辅相成!

1.通用大模型&#xff1a; 如OpenAI的GPT系列、Google的PaLM等&#xff0c;因其广泛的训练数据来源和强大的泛化能力&#xff0c;展现出在多种任务和场景中的应用潜力。它们能够处理从文本生成、代码编写到语言翻译等多种复杂任务&#xff0c;适应性强&#xff0c;减少了针对单…

视频格式转换avi格式怎么弄?分享视频转换方法

视频格式转换avi格式怎么弄&#xff1f;AVI作为一种广泛支持的视频格式&#xff0c;能够在多种设备和播放器上顺畅播放&#xff0c;确保我们的视频内容能够无障碍地分享给朋友或上传至各大平台。其次&#xff0c;AVI格式通常具有较好的兼容性&#xff0c;能够避免格式转换过程中…

模拟信号转RS-485/232,数据采集A/D转换模块 YL21

特点&#xff1a; ● 模拟信号采集&#xff0c;隔离转换 RS-485/232输出 ● 采用12位AD转换器&#xff0c;测量精度优于0.1% ● 通过RS-485/232接口可以程控校准模块精度 ● 信号输入 / 输出之间隔离耐压3000VDC ● 宽电源供电范围&#xff1a;8 ~ 32VDC ● 可靠性高&…

CPN tools学习——可执行的 PN

目录 1添加令牌 2.转换防护Guard 1添加令牌 左侧新建颜色集和变量的声明定义&#xff1a; 为库所分配颜色集&#xff1a;左键tab键 P1处&#xff1a;添加多重集合&#xff0c;表示添加了两个令牌&#xff0c;第一个令牌值为A&#xff0c;第二个为B。 P2处&#xff1a;表示…

VMware清理拖拽缓存

磁盘空间越用越小&#xff0c;如何快速解决磁盘空间的问题&#xff0c;甩掉烦恼 安装VM tools之后可以通过拖拽的方式把文件拉入虚拟机之中。但每一次拖拽&#xff0c;其实都是现在cache文件夹里面生成一个同样的文件&#xff0c;并使用cp拷贝的方式将其拷贝到拖拽放置的目录中…

云平台DNS故障导致网站访问卡顿异常排查过程,wireshark、strace等工具在实际问题排查过程中的应用方法

一、问题现象 项目上使用华为私有云&#xff0c;前段时间华为升级云平台后&#xff0c;云上用户反馈业务系统出现卡顿&#xff0c;之前几秒可以刷新出来的页面现在需要几十秒。提供了一个比较明显的url和curl调用方法。 10.213.x.xxx:8082/files/login curl -H "Content-…

泰迪智能科技携手广西科技大学理学院共建“上进双创工作室”

6月12日&#xff0c;广东泰迪智能科技股份有限公司携手广西科技大学理学院在泰迪智能科技产教融合实训中心举行“上进双创工作室”签约揭牌仪式&#xff0c;标志“泰迪科技广西科大上进双创工作室”的正式启动。 仪式由泰迪智能科技运营中心总监翁梦婷主持。广西科技大学理学院…

使用 Elasticsearch 设计大规模向量搜索

作者&#xff1a;Jim Ferenczi 第 1 部分&#xff1a;高保真密集向量搜索 简介 在设计向量搜索体验时&#xff0c;可用选项的数量之多可能会让人感到不知所措。最初&#xff0c;管理少量向量很简单&#xff0c;但随着应用程序的扩展&#xff0c;这很快就会成为瓶颈。 在本系列…

ATA-3040C功率放大器的正确使用方法

功率放大器是一种用于增强电信号功率的重要设备。正确使用功率放大器可以确保信号的稳定放大&#xff0c;并避免设备损坏。下面将介绍功率放大器的正确使用方法。 确定输入信号的功率范围&#xff1a;在使用功率放大器之前&#xff0c;需要确定输入信号的功率范围。过大的输入功…

白酒:茅台镇白酒的品牌故事与传奇色彩

茅台镇&#xff0c;这个位于中国贵州省遵义市仁怀市的小镇&#xff0c;因为出产的白酒品质卓着&#xff0c;被誉为“世界名酒之乡”。在这片神奇的土地上&#xff0c;云仓酒庄以其豪迈白酒&#xff0c;书写了一段段品牌故事与传奇色彩。 云仓酒庄豪迈&#xff0c;酿造于茅台镇的…

shell文本三剑客 awk 和 grep

awk 前言 AWK是一种优良的文本处理工具。它不仅是 Linux中也是任何环境中现有的功能最强大的数据处理引擎之一。 Linux中最常用的文本处理工具有grep&#xff0c;sed&#xff0c;awk。行内将之称为文本三剑客&#xff0c;就功能量和效率来看&#xff0c;awk是当之无愧的文本三…

取模软件测试版生成的有斜线,但测试字库的功能是好用无限制。只需要自己开发一个字库生成软件。IDA工具,如何搜中文

IDA工具&#xff0c;如何搜中文 在 IDA (Interactive Disassembler) 中搜索中文字符串&#xff0c;可以按照以下步骤操作&#xff1a; 方法一&#xff1a;使用“搜索文本”功能 打开 IDA 并加载目标文件&#xff1a;启动 IDA 并打开你需要分析的二进制文件。打开搜索文本对话…

厨房燃气安全新保障:红外点式可燃气体报警器的作用

在现代家庭生活中&#xff0c;厨房的安全问题日益受到人们的关注。其中&#xff0c;燃气泄漏和火灾是厨房安全的主要隐患。 据统计&#xff0c;90%的火灾源于燃气泄漏&#xff0c;而厨房又是燃气使用最为频繁的区域。因此&#xff0c;一款高效、可靠的可燃气体报警器对于保障家…

原生JS如何实现可配置DM码

原生JS如何实现可配置DM码 一、 DM码简介 1、 Data Matrix码 Data Matrix码是一种二维条形码,简称DM码,由美国公司International Data Matrix, Inc.(I.D. Matrix)在1994年发明,Data Matrix码中的行数和列数随二维码中存储的信息量而增加,信息限值是2335个字母数字字符…