【每日刷题】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;

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

农业领域科技查新点提炼方法附案例!

农业学科是人类通过改造和利用生物有机体(植物、动物、微生物等)及各种自然资源(光、热、水、土壤等)生产出人类需求的农产品的过程&#xff0c;人类在这一过程中所积累的科学原理、技术、工艺和技能&#xff0c;统称为农业科学技术&#xff0c;该领域具有研究范围广、综合性强…

音乐APP界面设计步骤详解

伴随着互联网的迅速发展&#xff0c;许多与因特网相关的职位应运而生&#xff0c;UI界面设计师是因特网的核心职位之一。UI界面设计已经渗透到我们生活的方方面面&#xff0c;包括网站、应用程序或其它数字平台上的按钮、菜单布局、配色方案和排版。很多人认为 UI界面设计只是关…

计算机图形学入门12:纹理映射

1.问题 如上图所示&#xff0c;前面的内容已经知道怎么对物体进行着色&#xff0c;在球和地板上出现了不同的颜色&#xff0c;也就是定义了不同的kd颜色系数&#xff0c;那么如何在物体不同位置定义不同属性呢&#xff1f; 2.纹理映射 2.1什么是纹理映射 如上图球的表面贴上一…

探索Jetpack Compose中的高效导航库:Voyager项目

探索Jetpack Compose中的高效导航库&#xff1a;Voyager项目 在Jetpack Compose中实现高效、可扩展的导航是每个开发者的追求。Voyager作为一个多平台导航库&#xff0c;不仅与Jetpack Compose无缝集成&#xff0c;还提供了一套务实的API&#xff0c;帮助开发者创建单活动应用…

tvm实战踩坑

今天玩了一下tvm的安装 我要安装v0.14.0的版本 所以按照官网的方法 https://tvm.apache.org/docs/install/from_source.html#python-package-installation git clone --recursive https://github.com/apache/tvm tvmgit checkout v0.14.0recursive是很重要的 这一步可以替换成…

显卡GPU、CUDA、Pytorch版本对应即下载安装

显存大于4G的建议使用GPU版本的pytorch&#xff0c;低于4G建议使用CPU版本pytorch&#xff0c;直接使用命令安装对应版本即可 GPU版本的pytorch的使用需要显卡支持&#xff0c;需要先安装CUDA&#xff0c;即需要完成以下安装 1.查看显卡GPU支持的CUDA版本&#xff08;最高&…

Flutter系列:关于ensureInitialized()

Flutter系列 关于ensureInitialized() - 文章信息 - 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_28…

vue3 proxy对象转为原始对象

https://cn.vuejs.org/api/reactivity-advanced.html#toraw import { toRaw } from "vue";const foo {} const reactiveFoo reactive(foo)console.log(toRaw(reactiveFoo) foo) // true 人工智能学习网站 https://chat.xutongbao.top

18.9k star!一个高性能的嵌入式分析型数据库,主要用于数据分析和数据处理任务

大家好&#xff0c;今天给大家分享的是一个开源的面向列的关系数据库管理系统(RDBMS)。 DuckDB是一个嵌入式的分析型数据库&#xff0c;它提供了高性能的数据分析和数据处理能力。DuckDB的设计目标是为数据科学家、分析师和数据工程师提供一个快速、灵活且易于使用的数据分析工…

『SD』场景变换魔法:InstructP2P控制类型助你一键换天气

本文简介 InstructP2P 控制类型是 ControlNet 插件中的一个强大功能&#xff0c;InstructP2P 的主要能力是实现场景转换&#xff0c;风格迁移。 我将绫波丽的形象从她原本身着机甲、在夜空下站着的场景&#xff0c;转换到春意盎然的环境中,四周环绕着绽放的花朵和嫩绿的新叶。…

如何基于Excel文件图形化从零建表并导入数据(以MySQL和SQLynx为例)

目录 1. 准备Excel数据 2. 导入Excel数据 a. 登录SQLynx b. 导入Excel文件 3. 验证数据 4. 使用和管理表 5. 总结 在实际的业务过程中&#xff0c;我们经常会有很多数据存储在Excel中&#xff0c;但在Excel中的数据分析不如使用SQL和数据库方便&#xff0c;数据量大些的…

蒂姆·库克解释Apple Intelligence和与ChatGPT合作的区别|TodayAI

在2024年全球开发者大会&#xff08;WWDC 2024&#xff09;上&#xff0c;苹果公司首席执行官蒂姆库克&#xff08;Tim Cook&#xff09;隆重介绍了公司的最新人工智能&#xff08;AI&#xff09;计划——Apple Intelligence&#xff0c;并宣布了与OpenAI的ChatGPT的合作。虽然…

大型语言模型(LLMs)是如何工作的?

大型语言模型&#xff08;LLMs&#xff09;如ChatGPT、Bing的“Sydney”模式和Google的Bard正在占据新闻头条。与其讨论它们将使哪些工作变得过时&#xff0c;本文将探讨这些模型的工作原理&#xff0c;包括它们从哪里获取数据以及使它们能够生成令人信服的真实文本的基本数学方…

【课程总结】Day8(上):深度学习基本流程

前言 在上一篇课程《【课程总结】Day7&#xff1a;深度学习概述》中&#xff0c;我们了解到&#xff1a; 模型训练过程→本质上是固定w和b参数的过程&#xff1b;让模型更好→本质上就是让模型的损失值loss变小&#xff1b;让loss变小→本质上就是求loss函数的最小值&#xf…

Postman接口测试工具详解(高清图例)

一、引言 1. 介绍接口测试的重要性 在当今软件开发领域&#xff0c;接口&#xff08;API&#xff09;已成为不同系统、服务或组件之间交互的桥梁。随着微服务架构的普及&#xff0c;接口的重要性日益凸显。然而&#xff0c;接口的复杂性和多样性也带来了诸多挑战&#xff0c;其…

【中间件】Pulsar集群安装

目录 一、Pulsar介绍 1.1 Pulsar基本介绍 1.2 Pulsar架构 Producer & Consumer Apache Zookeeper Pulsar Brokers Apache Bookkeeper 二、Zookeeper集群安装 三、Pulsar集群安装 3.1 bookie与broker配置 3.1.1 修改bookie配置文件 3.1.2 修改broker配置文件 3…

轮到国产游戏统治Steam榜单

6月10日晚8点&#xff0c;《黑神话:悟空》实体版正式开启全款预售,预售开启不到5分钟,所有产品即宣告售罄。 Steam上&#xff0c;《黑神话:悟空》持续占据着热销榜榜首的位置。 但在《黑神话:悟空》傲人的光环下&#xff0c;还有一款国产游戏取得出色的成绩。 6月10日&#…

32T存储删除视频的恢复方法

由于存储技术的发展和普及目前很多行业都开始使用小型存储&#xff0c;NAS可以通过网络进行数据上传和读取&#xff0c;使用极为方便。但是由于NAS设备容量较大且碎片较多&#xff0c;所以此类设备删除或者格式后恢复难度是比较大的&#xff0c;下边我们来分享下32T存储的恢复方…

Android面试题之ActivityManagerService的启动流程

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 SystemServer启动 创建SystemContex 用于加载系统相关的资源&#xff0c;比如theme&#xff0c;android命名空间下的资源等创建引导服务&#…

关于Ubuntu24.04嘉立创EDA无法启动的问题

关于Ubuntu24.04嘉立创EDA无法启动的问题 查看无法启动原因解决办法1解决办法2 查看无法启动原因 在终端使用启动文件命令报错 解决办法1 输入如下命令可以正常启动 ./lceda-pro --no-sandbox 解决办法2 找到desktop文件进行修改 cd /usr/share/applications sudo vim lce…