Leetcode 2792. 计算足够大的节点数
1.题目基本信息
1.1.题目描述
给定一棵二叉树的根节点 root 和一个整数 k 。如果一个节点满足以下条件,则称其为 足够大 :
它的子树中 至少 有 k 个节点。
- 它的值 大于 其子树中 至少 k 个节点的值。
- 返回足够大的节点数。
如果 u == v 或者 v 是 u 的祖先,则节点 u 在节点 v 的 子树 中。
1.2.题目地址
https://leetcode.cn/problems/count-nodes-that-are-great-enough/description/
2.解题方法
2.1.解题思路
递归+归并+二分查找
时间复杂度:O(Klog(N))
2.2.解题步骤
第一步,构建维护变量。result维护足够大的节点数
第二步,构建递归函数。递归任务:返回node子树中所有节点值的升序数组的前k个元素子数组;并在递归的过程中进行计数,更新self.result
2.1.递归出口
2.2.对node的左右子节点的递归结果数组进行归并
2.3.将node.val插入arr数组中
2.4.更新结果变量;并返回递归值
第三步,调用递归,返回结果
3.解题代码
Python代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
from bisect import bisect_leftclass Solution:def countGreatEnoughNodes(self, root: Optional[TreeNode], k: int) -> int:# 思路:递归+归并+二分查找。时间复杂度:O(Klog(N))# 第一步,构建维护变量。result维护足够大的节点数self.result = 0# 第二步,构建递归函数。递归任务:返回node子树中所有节点值的升序数组的前k个元素子数组;并在递归的过程中进行计数,更新self.resultdef dfs(node:TreeNode) -> list[int]:# 2.1.递归出口if node is None:return []# 2.2.对node的左右子节点的递归结果数组进行归并leftList, rightList = dfs(node.left), dfs(node.right)arr = [0] * (len(leftList) + len(rightList))i, j, k1 = 0, 0, 0while i < len(leftList) and j < len(rightList):if leftList[i] < rightList[j]:arr[k1] = leftList[i]i += 1; k1 += 1else:arr[k1] = rightList[j]j += 1; k1 += 1while i < len(leftList):arr[k1] = leftList[i]i += 1; k1 += 1while j < len(rightList):arr[k1] = rightList[j]j += 1; k1 += 1# 2.3.将node.val插入arr数组中index = bisect_left(arr, node.val)arr.insert(index, node.val)# 2.4.更新结果变量;并返回递归值if len(arr) >= k and arr[k - 1] < node.val:self.result += 1return arr[:k]# 第三步,调用递归,返回结果dfs(root)return self.result
4.执行结果
相关文章:

Leetcode 2792. 计算足够大的节点数
1.题目基本信息 1.1.题目描述 给定一棵二叉树的根节点 root 和一个整数 k 。如果一个节点满足以下条件,则称其为 足够大 : 它的子树中 至少 有 k 个节点。 它的值 大于 其子树中 至少 k 个节点的值。返回足够大的节点数。 如果 u v 或者 v 是 u 的…...
《关于浔川社团退出DevPress社区及内容撤回的声明》
《关于浔川社团退出DevPress社区及内容撤回的声明》 尊敬的DevPress社区及读者: 经浔川社团内部决议,我社决定自**2025年5月26日**起正式退出DevPress社区,并撤回所有由我社成员在该平台发布的原创文章。相关事项声明如下: …...
Windows逆向工程提升之IMAGE_RESOURCE_DIRECTORY
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 资源目录概述 什么是资源目录? 资源目录的作用 资源目录的位置 资源目录核心结构 IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY_ENTRY IMAGE_RESOURCE_DATA_EN…...

使用ps为图片添加水印
打开图片 找到文字工具 输入想要添加的水印 使用移动工具移动到合适的位置 选中文字图层 设置不透明度 快捷键ctrlt可以旋转 另存为png格式图片...

x64_ubuntu22.04.5安装:cuda driver + cuda toolkit
引言 本文操作均已实践验证,安装流程来自nvidia官方文档,验证平台显卡:RTX4070。 验证日期:2025.5.24. 1.安装cuda driver 1.1.安装方式有2种,这里选择方式1: 从apt安装最省事💖,…...

开盘啦 APP 抓包 逆向分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 抓包 这是一个记录贴。 这个APP是数…...

vs2022 Qt Visual Studio Tools插件设置
安装之后,需要指定QT中msvc编译器的位置,点击下图Location右边的按钮即可 选择msvc2022_64\bin目录下的 qmake.exe 另一个问题,双击UI文件不能打开设计界面 设置打开方式 选择msvc2022_64\bin目录下的designer.exe 确定即可 然后设置为默认值即可 确定…...

Python包__init__.py标识文件解析
在 Python 中,__init__.py 文件是包(Package)的核心标识文件,它的存在使一个目录被 Python 解释器识别为「包」。这个文件有以下核心作用: 核心作用 标识包的存在 任何包含 __init__.py 的目录都会被 Python 视为一个包…...
【MySQL】第8节|Innodb底层原理与Mysql日志机制深入剖析(一)
MySQL 的 redo log(重做日志) redo log 是 MySQL 中 InnoDB 存储引擎实现事务持久性的关键机制,用于记录数据库数据的变更,确保事务提交后数据不丢失,即使发生宕机也能通过日志恢复数据。 核心作用 1. 实现事务的持…...

电商ERP管理系统,Java+Vue,含源码与文档,统筹订单、库存等,助力电商企业高效运营
前言: 在当今数字化飞速发展的电商时代,电商企业面临着日益激烈的市场竞争和复杂的业务运营环境。为了提升运营效率、降低成本、优化客户体验,一套高效、全面的电商ERP管理系统显得尤为重要。电商ERP管理系统整合了企业内部的各项业务流程&a…...

Spring Boot微服务架构(四):微服务的划分原则
微服务划分原则(CRM系统案例说明) 一、微服务划分的核心原则 单一职责原则(SRP) 每个微服务只负责一个明确的业务功能服务边界清晰,避免功能混杂便于独立开发、测试和部署 业务领域驱动设计(DDD࿰…...

【打卡】树状数组的操作
#define MAXN 1000 int n; // 数组实际长度 int array[MAXN]; // 原始数组(下标从0开始) int tree[MAXN]; // 树状数组(下标从1开始) int p[MAXN]; // 前缀和数组(下标从1…...
OpenLayers 加载动画控件
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图控件是一些用来与地图进行简单交互的工具,地图库预先封装好,可以供开发者直接使用。OpenLayers具有大部分常用的控件&#x…...
Oracle 基础知识作业的使用
对于DBA来说,数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作。 Oracle 视图 User_Jobs 是Oracle数据库中的一…...

HTTP协议初认识、速了解
目录 1. 什么是HTTP协议 2. HTTP协议特点 3. HTTP协议发展和版本 3.1. HTTP1.0 3.2. HTTP1.1 3.3. HTTP2.0 3.4. http1.1和http2.0区别 4. HTTP协议中URI、URL、URN 4.1. URI 4.2. URL 4.3. URN 5. HTTP协议的请求 5.1. HTTP协议中的请求信息 5. 总结 前言 本文讲…...
C#:多线程Task使用
一.Task与Thread Task是架构在Thread之上的,也就是说任务最终还是要抛给线程去执行。Task跟Thread不是一对一的关系,比如开10个任务并不是说会开10个线程,这一点任务有点类似线程池,但是任务相比线程池有很小的开销和精确的控制。…...

模拟电子技术基础----绪论
一、电子技术的发展 1.电子技术的发展,推动计算机技术的发展,使之“无孔不入”,应用广泛! •广播通信:发射机、接收机、扩音、录音、程控交换机、电话、手机 •网络:路由器、ATM交换机、收发器、调制解调…...
从零基础到最佳实践:Vue.js 系列(2/10):《模板语法与数据绑定》
Vue.js 模板语法与数据绑定:从基础到实践 关键点 Vue.js 的模板语法使用 HTML 结合特殊指令(如 v-bind、v-on),实现动态界面。插值({{ }})显示数据,指令控制 DOM 行为,双向绑定简化…...

iOS 使用 - 设置 来电震动/关闭震动
来电震动是一个很直观的老功能。但到了iOS 18,苹果却把震动功能的开关藏得越来越深,甚至分散在不同的菜单里,让用户难以找到。这里记录分享设置方法: 1. 震动开关的路径 设置 → 通用 → 辅助功能 → 触控 → 震动 2. 来电震动…...
anaconda、miniconda、conda的关系及miniconda安装
anaconda、miniconda、conda的关系及miniconda安装 文章目录 前言正文定义关系Linux安装miniconda新建一个python3.8环境 参考 前言 本文用于记录关于Anaconda、conda和Miniconda的定义及其关系的总结123: 正文 定义 conda 一个跨平台的开源包管理和环境管理工具…...

[C语言初阶]扫雷小游戏
目录 一、原理及问题分析二、代码实现2.1 分文件结构设计2.2 棋盘初始化与打印2.3 布置雷与排查雷2.4 游戏主流程实现 三、后期优化方向 在上一篇文章中,我们实现了我们的第二个游戏——三子棋小游戏。这次我们继续结合我们之前所学的所有内容,制作出我们…...

谷歌medgemma-27b-text-it医疗大模型论文速读:多语言大型语言模型医学问答基准测试MedExpQA
《MedExpQA: 多语言大型语言模型医学问答基准测试》论文解析 一、引言 论文开篇指出大型语言模型(LLMs)在医学领域的巨大潜力,尤其是在医学问答(QA)方面。尽管LLMs在医学执照考试等场景中取得了令人瞩目的成绩&#…...
Lambda表达式的高级用法
今天来分享下Java的Lambda表达式,以及它的高级用法。 使用它可以提高代码的简洁度,使代码更优雅。 一、什么是lambda表达式 Lambda 表达式是 Java 8 引入的特性,用于简化匿名内部类的语法,使代码更简洁,尤其在处理函…...
速盾(sudun):如何利用CDN技术实现页面加速?
随着互联网内容的爆炸式增长,用户对网页加载速度的要求也越来越高。快速加载的网页不仅能提升用户体验,还能直接影响搜索引擎排名和网站转化率。内容分发网络(CDN)作为一种有效的解决方案,通过在全球范围内部署多个高性…...

DeepSeek+白果AI论文:开启答辩PPT生成的「智能双引擎」时代
2025学术答辩革新:DeepSeek与白果AI论文的黄金协同方案 白果Ai论文,论文写作神器~ https://www.baiguoai.com/ 在学术答辩的「战场」上,「选题创新不足」「数据可视化低效」「PPT逻辑断裂」等痛点长期困扰研究者。DeepSeek与白果AI论文的深…...
Jest入门
快速入门 Jest中文文档 | Jest中文网 1.下载:npm install --save-dev jest 2.创建 sum.js 文件: function sum(a, b) { return a b; } module.exports sum; 3.创建sum.test.js 的文件 const sum require(./sum); test(adds 1 2 to equal 3,…...

SDC命令详解:使用set_logic_dc命令进行约束
相关阅读 SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482 set_logic_dc命令可以将当前设计中的输入端口为不关心(设置端口的driven_by_dont_care属性为true),该端口在综合是可以被认为是…...

小程序涉及提供提供文本深度合成技术,请补充选择:深度合成-AI问答类目
一、问题描述 最近新项目AI咨询小程序审核上线,按照之前小程序的流程,之前审核,提示审核不通过,审核不通过的原因:小程序涉及提供提供文本深度合成技术 (如: AI问答) 等相关服务,请补充选择:深…...
SQL每日一练(2)
表: 产品表 p product_idproduct_name1产品 A2产品 B3产品 C 销售表 s sale_idproduct_idcountryamountsale_date11法国1000.002020-09-1522法国1500.002020-09-2033法国800.002020-09-1041英国1200.002020-09-2552英国1600.002020-09-0563英国900.002020-09-30…...

基于亚博K210开发板——lvgl 图形化实验
开发板 亚博K210开发板 实验目的 本次测试主要学习 K210 图形化操作界面的功能。 实验元件 LCD 显示屏、FT6236 触摸板 lvgl 图形化库简介 LVGL(轻度综合图形界面库)是一个免费开源图形库,具有使用方便,画面美观ÿ…...