【每日刷题】Day63

【每日刷题】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.mzph.cn/web/26166.shtml

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

相关文章

RainBond 制作应用并上架【以ElasticSearch为例】

文章目录 安装 ElasticSearch 集群第 1 步:添加组件第 2 步:查看组件第 3 步:访问组件制作 ElasticSearch 组件准备工作ElasticSearch 集群原理尝试 Helm 安装 ES 集群RainBond 制作 ES 思路源代码Dockerfiledocker-entrypoint.shelasticsearch.yml制作组件第 1 步:添加组件…

男士内裤买便宜还是贵的?2024年高性价比男士内裤汇总分享

男生内裤&#xff0c;作为贴身衣物&#xff0c;承载着男性的私密与舒适。然而&#xff0c;许多男士的内裤状况却让人大跌眼镜&#xff1a;穿到变形、腰部松垮无弹性&#xff0c;屁股后面甚至出现破洞&#xff0c;这样的景象已然屡见不鲜。更有些男士的内裤&#xff0c;中间一个…

MySQL查询优化最佳实践15条(建议收藏)

目录 1 优化方法&#xff08;15条&#xff09; 2 总结 MySQL的数据库常规查询的过程中性能的优化非常重要&#xff0c;其中很多点是和开发习惯有关&#xff0c;能熟练掌握不只能提高工作的效率&#xff0c;同时也能提高个人的技能。有一些优化的技巧同样也适合于其他的数据库…

细说MCU修改回调函数调用模式的方法

目录 1、硬件及工程 2、实现方法 &#xff08;1&#xff09;修改while(1)中的代码&#xff1a; &#xff08;2&#xff09;修改2 &#xff08;3&#xff09;修改3 &#xff08;4&#xff09;修改4 &#xff08;5&#xff09;修改5 3、下载并运行 在本文作者的文章中&a…

MySQL-----排序 GROUP BY

在我们对数据进行分析的时候&#xff0c;通常会根据一个或多个列对结果集进行分组&#xff0c;从而得到我们想要的结果。例如&#xff1a;统计考某一门课程的学生信息等。 而MySQL的GROUP BY 语句根据一个或多个列对结果集进行分组。同时&#xff0c;我们也可以使用 COUNT, SUM…

NHANES数据库及应用

NHANES数据库使用 NHANES - National Health and Nutrition Examination Survey Homepage (cdc.gov) 保姆级NHANES数据库使用教程 - 哔哩哔哩 (bilibili.com) 该数据库所涉及的参与者的死亡状况 &#xff1a;Data Access - National Death Index (cdc.gov) TyG对CVD的影响研…

【培训】企业档案管理专题(私货)

导读&#xff1a;通过该专题培训&#xff0c;可以系统了解企业档案管理是什么、为什么、怎么做。尤其是对档案的价值认知&#xff0c;如何构建与新质生产力发展相适应的企业档案工作体系将有力支撑企业新质生产力的发展&#xff0c;为企业高质量发展贡献档案力量&#xff0c;提…

运维系列.在Docker中使用Grafana

运维专题 在Docker中使用Grafana - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_2855026…

大厂面试必备:如何轻松实现分布式Session管理?

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!​​​​​​​ 大家好,我是小米,一个29岁的技术爱好者,喜欢分享各种技术干货。今天我们来聊一聊阿里巴巴面试中的一个经典问题:如何实现分布式Sess…

鸿蒙轻内核A核源码分析系列五 虚实映射(2)虚实映射初始化

2、 虚拟映射初始化 在文件kernel/base/vm/los_vm_boot.c中的系统内存初始化函数OsSysMemInit()会调用虚实映射初始化函数OsInitMappingStartUp()。该函数代码定义在文件arch/arm/arm/src/los_arch_mmu.c&#xff0c;代码如下。⑴处函数使TLB失效&#xff0c;清理虚实映射缓存…

深度学习(四)——torchvision中数据集的使用

1. 参数详解 torchvision中每个数据集的参数都是大同小异的&#xff0c;这里只介绍CIFAR10数据集 该数据集的数据格式为PIL格式 class torchvision.datasets.CIFAR10(root:str,train:boolTrue,transform:Optional[Callable]None,target_transform:Optional[Callable]None,do…

《庆余年》角色穿越高考:谁将笑傲现代考场?

一、引言 《庆余年》是一部以古代中国为背景的权谋小说&#xff0c;其角色们各具特色&#xff0c;聪明才智、武艺高强、忠诚耿直等特质使得他们在古代世界中游刃有余。然而&#xff0c;如果我们将这些角色置于现代高考的背景之下&#xff0c;他们将如何面对这一挑战&#xff1…

Java版电子招标采购系统源码:实现企业采购战略与流程的数字化革新

随着企业的发展&#xff0c;内部采购管理面临着日益增长的挑战。为了提升采购效率&#xff0c;确保采购过程的透明性和公正性&#xff0c;企业需要一个高效、规范的电子招标采购系统。鸿鹄电子招投标系统正是为此而设计&#xff0c;它采用Java技术&#xff0c;结合先进的微服务…

javaWeb项目-ssm+vue网上租车系统功能介绍

本项目源码&#xff1a;java-基于ssmvue的网上租车系统源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、…

Liinux:进程程序替换

替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用e…

Pikachu上的CSRF以及NSSCTF上的[NISACTF 2022]bingdundun~、 [SWPUCTF 2022 新生赛]xff

目录 一、CSRF CSRF(get) login CSRF(post) CSRF Token 二、CSRF的相关知识点 &#xff08;1&#xff09;什么是CSRF&#xff1f; &#xff08;2&#xff09;工作原理 &#xff08;3&#xff09;CSRF漏洞形成的条件 1、用户要在登录状态&#xff08;即浏览器保存了该…

别再忽视数组排序的重要性了

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

线稳源极跟随 线性电源前端降压

功率MOSFET线性电源涉及跟随.ms14 根本原理是Vgs对Id的控制&#xff0c;Vgs越大&#xff0c;Id越大&#xff0c;反之亦然。 观察转移特性曲线&#xff0c;结合接线图可知&#xff0c;电路稳定后&#xff0c;如果负载电阻增大&#xff0c;则Vsgnd增大&#xff0c;由于Vggnd有稳…

ONNX2NCNN工具

最近部署很多onnx转ncnn的操作&#xff0c;发现还是需要有页面操作会比较好&#xff0c;而且需要查询onnx的图&#xff0c;所以写了一个工具来搭配使用 建议搭配Netron 来使用 打开模型 选择打开-》选择onnx模型 显示基础信息 查询onnx模型图 展示信息 点击“展示信息”&…

vb.net小demo(计算器、文件处理等/C#也可看)

Demo1&#xff1a;使用窗体控件实现一个简易版计算器 Public Class Form1Private Sub Button_1_Click(sender As Object, e As EventArgs) Handles Button_1.ClickCalSubBox.Text Button_1.TextEnd SubPrivate Sub Button_2_Click(sender As Object, e As EventArgs) Handles …