每日一题(day1)

2023-11-08

题目链接
在这里插入图片描述

方法一:使用栈进行中序遍历

在这里插入图片描述

class Solution {
public:
    int kthSmallest(TreeNode *root, int k) {
        stack<TreeNode *> ST;
        while (root != NULL || ST.size() > 0) 
        {
            while (root != NULL) 
            {
                ST.push(root);
                root = root->left;
            }
            root = ST.top();
            ST.pop();
            --k;
            if (k == 0) 
            {
                break;
            }
            root = root->right;
        }
        return root->val;
    }
};

方法二:分治
对于当前结点:如果其left的结点总数小于k-1。那么第k小的数一定在右子树,令node为右子结点,K为k-left-1;
对于当前节点:如果其left节点总数大于k-1。那么第K小的数一定在左子树,令node为其左子树
对于当前节点:如果其left节点总数等于k-1。那么第k小的数一定是当前节点

class Solution {
public:
    int kthSmallest(TreeNode *root, int k) 
    {
        TreeNode* node=root;
        while(node!=NULL)
        {
            int num=getnum(node->left);
            if(num==k-1)
            {
                break;
            }
            else if(num<k-1)
            {
                k-=num+1;
                node=node->right;
            }
            else
            {
                node=node->left;
            }
        }
        return node->val;
    }
    int getnum(TreeNode* root)
    {
        if(root==NULL)
            return 0;
        return 1+getnum(root->left)+getnum(root->right);
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每日一题(day1) 的相关文章

  • 编写此代码片段的有效方法是什么? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 更有效和 或更短地重写此代码以节省字节并显得不那么冗长的方法 if N 2 0 N 6 N 8 N 10 N 12 N 14 N 16 N
  • 如何使用 ASP.NET MVC 编辑多选列表?

    我想编辑一个如下所示的对象 我希望用 UsersGrossList 中的一个或多个用户填充 UsersSelectedList 使用 mvc 中的标准编辑视图 我只得到映射的字符串和布尔值 下面未显示 我在 google 上找到的许多示例都
  • 无法将 std::min 传递给函数,std::min 的副本有效

    Passing std min函数无法编译 我复制了 libcpp 声明std min进入我的源文件并且它可以工作 std 版本有什么问题 clang 和 gcc 也会发生同样的情况 在 Godbolt 上测试 https godbolt
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • C# 处理标准输入

    我目前正在尝试通过命令行断开与网络文件夹的连接 并使用以下代码 System Diagnostics Process process2 new System Diagnostics Process System Diagnostics Pr
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • 将日期时间转换为指定格式

    我有这个日期格式yy MM dd HH mm ss ex 12 02 21 10 56 09 问题是 当我尝试使用以下代码将其转换为不同格式时 CDate 12 02 21 10 56 09 ToString MMM dd yyyy HH
  • 在 C++11 中移出 stdpriority_queue 的元素

    最小的工作示例 include
  • 在 C# 中何时使用 ArrayList 而不是 array[]?

    我经常使用一个ArrayList而不是 正常 array 当我使用时 我感觉好像我在作弊 或懒惰 ArrayList 什么时候可以使用ArrayList在数组上 数组是强类型的 并且可以很好地用作参数 如果您知道集合的长度并且它是固定的 则
  • 使用 C# 中的 Google 地图 API 和 SSIS 包获取行驶距离

    更新 找到了谷歌距离矩阵并尝试相应地修改我的代码 我在这里收到无效参数错误 return new GeoLocation dstnc uri ToString catch return new GeoLocation 0 0 https 基
  • 如何使用递归查找数字中的最小元素 [C]

    好的 所以我正在准备我的 C 考试 当谈到递归时我有点卡住了我是大学一年级的学生 这对我来说似乎有点困难 练习要求在给定的数字中使用递归函数我需要找到最小的元素 例如 52873 是 2 程序需要打印 2 include
  • Resharper:IEnumerable 的可能多重枚举

    我正在使用新的 Resharper 版本 6 在我的代码中的几个地方 它给一些文本加了下划线 并警告我可能存在IEnumerable 可能的多重枚举 我理解这意味着什么 并在适当的情况下采纳了建议 但在某些情况下 我不确定这实际上是一个大问
  • 使用 OleDbCommandBuilder 时访问 SQL 语法错误

    我要在 C 中使用 OleDbDataAdapter 在 Access 数据库中插入数据 但收到错误消息INSERT INTO 命令中的语法错误 BackgroundWorker worker new BackgroundWorker Ol
  • doxygen c++:记录由“using”声明公开的私有继承成员

    作为一个例子 我有以下课程 class A public void methodOne class B private A public Brief description using A methodOne 我还没有找到强制 doxyge
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 有没有办法直接在函数参数中格式化字符串而不是使用临时字符串?

    我有一个接受字符串 字符数组 作为参数的函数 void enterString char my string 当使用这个函数时 我经常发现自己想要输入格式化的字符串 我使用 sprintf 来做到这一点 然而 我每次都必须创建一个临时字符串
  • 无法识别解决方案文件夹中的 Visual Studio 2017 Nuget.config

    我在使用 Visual Studio 2017 时遇到问题 新的解决方案不断引用 C Users yopa AppData Roaming NuGet Nuget config 中意外位置的 Nuget config 文件 我已将 nuge
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 使用 C# 动态创建按钮并按预定义的顺序放置它们

    NET 4 5 C 创建 Windows 窗体 我想动态创建和添加按钮并为其分配单击事件 但希望它们以特定的方式动态放置 就像图像一样 我的问题是如何以上述方式动态放置按钮 即 4x4 格式 一行 4 个按钮 4 列 但行数不受限制 是否可
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的

随机推荐

  • pandas 数据类型之 Series

    Python 官网 https www python org 这里 才 python 前沿 可惜是英文原版 所以 我要练习英文阅读 我的CSDN主页 My Python 学习个人备忘录 我的HOT博 老齐教室 自学并不是什么神秘的东西 一个
  • Scala 正则表达式

    Scala 正则表达式 Scala 通过 scala util matching 包中的 Regex 类来支持正则表达式 以下实例演示了使用正则表达式查找单词 Scala import scala util matching Regex o
  • chatglm docker镜像,一键部署chatglm本地知识库

    好久没有写文章了 今天有空 记录一下chatglm本地知识库的docker镜像制作过程 核心程序是基于 闻达 开源项目 稍作改动 镜像可以直接启动运行 大家感兴趣可以进入镜像内部查看 代码位于 app 目录下 一 制作镜像 docker t
  • ISTQB认证工程师学习笔记(5)——测试管理

    测试管理的学习目标 测试组织 测试计划和估算 测试监督与控制 配置管理 风险和测试 缺陷管理 测试组织 独立测试 测试任务可以由具体指定的测试人员完成 也可以由其他角色人员完成 比如客户 由于作者和测试员的认知取向不同 一定程度的独立性可以
  • SpringCloud Alibaba Nacos作为配置中心不生效问题

    在使用Springcloud Alibaba 的Nacos作为配置中心时 遇到了在配置中心中提交相关配置后但配置还是从本地获取 没有从nacos中获取的情况 可能是如下原因导致 1 需要自行新建bootstrap properties并配置
  • 人工稚能之sklearn分类

    分类算法和聚类比较类似 都是将输入数据赋予一个标签类别 区别是分类算法的分类是预先确定的 有明确含义的 而聚类的标签是从输入数据本身的分布中提取出来的一种抽象的类别 聚类是无监督算法 而分类是有监督的 除了输入数据x外 还有标签y 分类算法
  • WSL 更新NVIDIA 驱动 安装CUDA

    WSL 一定要使用WSL2 我选择的linux系统是ubuntu22 04 在微软应用商店安装的 安装完成之后可以通过 wsl l v查看 NVIDIA 驱动 WSL 中不要直接安装linux版的显卡驱动 而是需要在windows中安装驱动
  • 动态知识图补全问题

    4 19 4 23 动态信息 1 Dual Quaternion Knowledge Graph Embeddings 本文应该是静态方法 距离公式和旋转公式的一个统一框架 提出一个新的映射空间 Dual Quaternion space
  • 民数记研读1——于宏洁

    民数记研读 于宏洁 1 西乃山下 一 第一次数点百姓 二 各支派安营 三 前行 四 银号 2 几种重要的人 一 利未人 二 拿细耳人的条例 三 首领 3 管与教 一 从荣耀角度来看神的管教 二 在神的管教中 要注意的几个点 三 民数记中十次
  • Apple 的 plist 编辑器入门指南:基础操作与高级功能详解

    PlistEdit Pro是一款专为macOS编写的最高级属性列表Plist编辑器 对于Mac和IOS开发人员来说 编写应用程序时必须编辑各种列表文件 PlistEdit Pro通过提供直观且功能强大的界面 使编辑这些文件更加容易 它不仅能
  • 深度学习机器学习目标检测

    一 目标检测 1 深度学习开发流程 2 应用案例 3 目标检测算法基本流程 二 机器学习 1 机器学习算法能解决那些问题 分类问题 图像识别 垃圾邮件识别 回归问题 各种预测 房价 天气 股价等等 排序问题 推荐 点击率排序 生成问题 图像
  • 完全卸载Android Studio(卸载得干干净净)

    步骤其实很简单 一共三步 但是每一步都需要完成 步骤如下 打开控制面板或腾讯软件管家等执行常规的卸载操作 找到SDK的安装目录手动删除SDK 进入 C Users lt 你的用户名下 gt 目录下 手动删除 android AndroidS
  • github 创建分支,本地代码上传github 服务器上

    git分布式版本控制系统 我第一个接触的版本控制系统是svn 当时觉得版本控制就是这样 直到我遇到了git git是分布式版本控制系统 合适分布式开发 强调个体 速度快 灵活 代码冲突了也比较好解决 最让我喜欢的还是git的分支切换 在gi
  • Python学习.第五天.列表

    Python学习 第五天 列表 前言 一 列表的创建与删除 二 列表的查询操作 1 index 如果查询时列表中存在n个相同元素 只返回元素中的第一个元素的索引 2 获取列表中的单个元素 3 获取列表中的多个元素 4 判断指定元素在列表中是
  • 目标检测之EfficientNet

    本文参考以下链接 如有侵权 联系删除 参考链接 论文 EfficientNet Rethinking Model Scaling for Convolutional Neural Networks EfficientNet Rethinki
  • 获取assert目录下文件名及读取

    从assert文件下获取文件名字 String fl1 getAssets list 第一层 得到数据 images hello txt String fl1 getAssets list 第一层 第二层 得到数据 helloworld t
  • IDEA+MAVEN 打jar包

    目录 一 分类 二 胖包 三 瘦包 一 分类 jar包是分为胖包和瘦包 何为胖包 何为瘦包 首先胖包指的是带依赖的jar包 瘦包就是没有依赖的jar包 二 胖包 1 在pom xml添加如下Maven插件
  • el-select 结合 el-checkBox 实现下拉全选+多选功能

    实现效果如图所示 具体代码如下
  • RabbitMQ重复消费

    造成重复消费的原因 MQ向消费者推送message 消费者向MQ返回ack 告知所推送的消息消费成功 但是由于网络波动等原因 可能造成消费者向MQ返回的ack丢失 MQ长时间 一分钟 收不到ack 于是会向消费者再次推送该条message
  • 每日一题(day1)

    题目链接 方法一 使用栈进行中序遍历 class Solution public int kthSmallest TreeNode root int k stack