【每天40分钟,我们一起用50天刷完 (剑指Offer)】第三十九天 39/50【二分】【二叉搜索数第k个节点】

news2024/11/18 12:32:15

专注 效率 记忆
预习 笔记 复习 做题

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)
 
文章字体风格:
红色文字表示:重难点★✔
蓝色文字表示:思路以及想法★✔
 
如果大家觉得有帮助的话,感谢大家帮忙
点赞!收藏!转发!

本博客带大家一起学习,我们不图快,只求稳扎稳打。
由于我高三是在家自学的,经验教训告诉我,学习一定要长期积累,并且复习,所以我推出此系列。
只求每天坚持40分钟,一周学5天,复习2天
也就是一周学10道题
50天后我们就可以学完76道题,相信50天后,我们一定可以有扎实的代码基础!我们每天就40分钟,和我一起坚持下去吧!
qq群:866984458

本题出自 acwing网站
这个系列是免费的
打卡即刻退回费用。

第三十九天【剑指Offer例题代码 系列】

    • 56. 0到n-1中缺失的数字【二分】
    • 57. 数组中数值和下标相等的元素【二分】
    • 58. 二叉搜索树的第k个结点

56. 0到n-1中缺失的数字【二分】

在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int getMissingNumber(vector<int>& nums) {
        if (nums.empty()) return 0;

        int l = 0, r = nums.size() - 1;
        while (l < r)
        {
            int mid = l + r >> 1;
            if (nums[mid] != mid) r = mid;
            else l = mid + 1;
        }

        if (nums[r] == r) r ++ ;
        return r;
    }
};

57. 数组中数值和下标相等的元素【二分】

在这里插入图片描述
以为本题说了数组单调递增我们就可以利用单调性来找答案,时间复杂度O(logn)

class Solution {
public:
    int getNumberSameAsIndex(vector<int>& nums) {
        int l = 0, r = nums.size() - 1;

        while(l < r){
            int mid = l + r >> 1 ;

            if(nums[mid] >= mid) r = mid;

            else l = mid + 1 ;
        }
        if(nums[l] == l) return l;

        else return -1;
    }
};

58. 二叉搜索树的第k个结点

在这里插入图片描述

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:

    TreeNode *ans;

    TreeNode* kthNode(TreeNode* root, int k) {
        dfs(root, k);
        return ans;
    }

    void dfs(TreeNode *root, int &k)
    {
        if (!k || !root) return;
        dfs(root->left, k);
        --k;
        if (!k) ans = root;
        else dfs(root->right, k);
    }
};

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

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

相关文章

XRCameraSubsystem浅析

在使用ARFoundtion 4.2.8版本&#xff0c;要获取相机图像&#xff0c;还是通过ARCameraManager获取的。 大概的调用流程&#xff1a; 1. 应用脚本获取ARCameraManager对象&#xff0c;默认是挂在AR Camera下&#xff0c;向其注册回调函数。 2. ARCameraManager里会在每次Upd…

TortoiseSVN操作使用

说明 SVN常用于程序代码版本控制,由于业务需求需将生产资料通过SVN进行管控,涉及人员众多,权限分支管理需要细化,特此记录SVN的学习操作. 前言 版本控制是管理信息修改的艺术&#xff0c;它一直是程序员最重要的工具&#xff0c;程序员经常会花时间作出小的修改&#xff0c; 然…

干货 | 电路设计中如何减少ESD?

干货 | 电路设计中如何减少ESD&#xff1f; 今天给大家分享的是&#xff1a;在电路设计和PCB设计如何防止ESD损坏设备。 在电子行业中&#xff0c;保护设备免受ESD损坏是必须要注意的。静电放电&#xff08;ESD&#xff09;是一种非常高的电压尖峰&#xff0c;很容易损坏集成电…

【C++】STL中stack,queue容器适配器的模拟实现(使用deque容器)

文章目录 前言一、deque的一些基本知识相比vector&#xff1a;相比list&#xff1a;3为什么选择deque作为stack和queue的底层默认容器 二、stack模拟实现三、queue的模拟实现 前言 STL标准库中stack和queue的底层结构 &#xff1a;虽然stack和queue中也可以存放元素&#xff0c…

vue的组件化编程的详细讲解加代码演示

&#x1f600;前言 本片文章是vue系列第5篇整理了vue的组件化编程的详细讲解加代码演示 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&am…

leetcode 53. 最大子数组和

2023.7.28 要求找最大和的 连续子数组&#xff0c; 我的思路是用一个temp记录局部最优值&#xff0c;用ans记录全局最优值。 然后在每次for循环进行一个判断&#xff1a;当前遍历元素temp值 是否大于当前遍历元素的值&#xff0c;如果大于&#xff0c;说明temp值是帮了正忙的&a…

第12章 Linux 实操篇-Linux磁盘分区、挂载

12.1 Linux 分区 12.1.1 原理介绍 (1) Linux来说无论有几个分区&#xff0c;分给哪一目录使用,它归根结底就只有一个根目录&#xff0c;一个独立且唯一的文件结构, Linux中每个分区都是用来组成整个文件系统的一部分。 (2) Linux采用了一种叫“载入”的处理方法&#xff0c;…

临床医学怎样翻译比较 好

近年来&#xff0c;随着不同国家之间医药行业形成的共同研究趋势&#xff0c;临床翻译对于来自不同国家的医疗人员的合作至关重要。那么&#xff0c;临床医学怎样翻译比较 好&#xff0c;北京哪个翻译公司比较专业&#xff1f; 据了解&#xff0c;临床医学翻译包含患者病历记录…

selenium自动化-获取元素属性信息

在写自动化过程中我们会想验证自己的代码是否正确&#xff0c;比如登录之后&#xff0c;通过用户名或其他信息来证明你登录成功&#xff0c;或者点击链接后&#xff0c;是否会跳转新的页面。通过获取元素属性信息&#xff0c;可以解决我们的疑惑。 一、获取内容对象的内容信息 …

专题-【排序比较】

时间最好&#xff1a;直接和冒泡&#xff0c;n 堆排序和归并时间固定&#xff1a;nlog2n 空间&#xff1a;归并&#xff0c;n&#xff1b;快速&#xff0c;log2n 稳定&#xff1a;直冒归基

Spring 6【Resources资源和资源加载】(九)-全面详解(学习总结---从入门到深化)

目录 Resources资源和资源加载 Resources资源和资源加载 1.为什么要讲解Resources 在Java中 java.net.URL类是统一资源定位符的抽象&#xff0c;主要用于描述互联网上资源的一个字符串。一般语 法为&#xff1a; scheme:[//authority]path[?query][#fragment] 例如&#…

JavaScript学习 -- HMAC算法基本原理

HMAC&#xff08;Hash-based Message Authentication Code&#xff09;算法是一种基于哈希算法的消息认证码算法。它可以用于验证和保护数据在传输过程中的完整性和真实性。在JavaScript中&#xff0c;我们可以使用HMAC算法来保证数据的安全性。本篇文章将介绍HMAC算法的基本原…

超详细三子棋(保姆级教学)

超详细三子棋&#xff08;保姆级教学&#xff09; 一、模块化程序设计&#xff08;多文件编程&#xff09;介绍1.概述2.传统编程的方式3.模块化程序设计的方法二、三子棋(含多子棋)代码设计思路三、三子棋代码设计1.创建菜单函数2.实现多子棋3.棋盘初始化4.打印棋盘格式5.玩家下…

使用express搭建后端服务

目录 1 创建工程目录2 初始化3 安装express依赖4 启动服务5 访问服务总结 上一篇我们利用TDesign搭建了前端服务&#xff0c;现在的开发讲究一个前后端分离&#xff0c;后端的话需要单独搭建服务。后端服务的技术栈还挺多&#xff0c;有java、php、python、nodejs等。在众多的技…

hbase(1)-基础

1、hbase产生背景 hadoop只能执行批量处理&#xff0c;并且只能以顺序方式访问数据&#xff0c;这意味着即使最简单的搜索工作&#xff0c;也必须搜索整个数据集。那么当处理一个庞大的数据集&#xff0c;也是按照顺序处理一个巨大的数据集。 基于上述hadoop的限制&#xff0…

股东分红税高达20%,该怎么节税?

股东分红税高达20%&#xff0c;该怎么节税&#xff1f; 别吃大亏了!股东分红个税高达20%&#xff0c;这样做节税很实在&#xff01; 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 企业成立的初衷就是为了赚钱&#xff0c;以盈利为…

ts中声明引入未使用的报错——解决方案

在编写ts项目的时候&#xff0c;经常会出现如下报错&#xff1a; 导入声明中的所有导入都未使用 这是因为导入的模块暂时没有使用&#xff0c;ts给的一个提示信息 解决方案&#xff1a; 在ts.config.json中 把noUnusedLocals 设置为false即可 {"compilerOptions"…

进阶 vue自定义指令 vue中常用自定义指令以及应用场景,案例书写

文章目录 vue3自定义指令1.什么是自定义指令&#xff1f;2.注册自定义指令2.1 全局注册2.2 局部注册<script setup>中注册&#xff1a;<script>中使用&#xff1a; 3.钩子函数参数详解4.指令传值5.总结 常用自定义指令案例v-longpress 长按v-debounce 防抖v-thrott…

微信怎么实现自动通过好友请求后自动回复呢?

每天都很忙碌 今天特别忙“录” 每天打开微信后&#xff0c; 第一件事就是回复客户&#xff0c; 但是经过一个小时、两个小时后发现&#xff0c; 只回复了昨晚留言的那一批客户&#xff0c; 还没有来得及回复刚刚发来的信息。 此外&#xff0c;通讯录中有99个客户等待手动…

代理模式-对象的间接访问

现在朋友圈有好多做香港代购的微商&#xff0c;大部分网民无法自己去香港购买想要的商品&#xff0c;于是委托这些微商&#xff0c;告诉他们想要的商品&#xff0c;让他们帮我们购买。我们只需要付钱给他们&#xff0c;他们就会去香港购买&#xff0c;然后把商品寄给我们。这就…