算法笔记——LCR

news2024/9/25 1:21:02

一.LCR 152. 验证二叉搜索树的后序遍历序列

题目描述:

给你一个二叉搜索树的后续遍历序列,让你判断该序列是否合法。

解题思路:

根据二叉搜索树的特性,二叉树搜索的每一个结点,大于左子树,小于右子树。所以二叉搜索树的中序遍历,本身就是一个有序的序列。由此我们看看二叉搜索树的后续遍历,后续遍历的顺序是,根,右子树,左子树。所以我们后续遍历的第一个结点就是根节点,后面遇到的若干个比根节点大的结点就是右子树结点,剩下的结点就都是左子树结点。根据这个规律就可以轻松的将二叉搜索树,划分出来。并且判断是否合法。然后将左右子树继续递归下去。

代码:

class Solution {
public:
    //二叉搜索树后续遍历特点,左 右 根,天然将数据划分为三部分
    //最右边一个是根
    //中间部分比根大
    //左边部分比跟小
    //同时中间部分和,左边部分又都是两部分子树
    
    bool dfs(vector<int>& postorder,int l,int r,int i)
    {
        //一个节点的树满足二叉搜索是树
        if(l>=r)return true;
        //获取根的值
        int root=postorder[i];
        i--;
        //获取右子树,右子树结点值大于根来判断右子树
        while(i>=l&&postorder[i]>=root)
        {
            i--;
        }
        //获取左子树,剩下的都是左子树值
        int next=i;
        while(next>=l)
        {
            //左子树的值应全部小于根,由于此左子树的依赖上面的右子树,
            //如果左子树没有提,右子树也就没有问题
            if(postorder[next]>=root)return false;
            next--;
        }
        return dfs(postorder,l,next,next)&&dfs(postorder,next+1,r-1,r-1);

    }
    bool verifyTreeOrder(vector<int>& postorder) {
        //左 右 根
        //小 大 等
        int r=postorder.size()-1;
        return dfs(postorder,0,r,r);
    }
};

二. LCR 003. 比特位计数

题目描述:

给出一个整数n,给出0~n之间每个整数的二进制中出现1的个数,结果返回一个数组。

思路描述:

没啥好的思路,打印出来找规律,规律如下。

 出来0之外的后面没2的次方个数,就是前面所有加1.

代码:

class Solution {
public:
    vector<int> countBits(int n) {
    vector<int>ans;
    ans.push_back(0);//初始化
    int num = 1,m=1;
    while(num<=n) {
        for (int i = 0; i < m && num <= n; i++, num++) {
            ans.push_back(ans[i] + 1);
        }
        m *= 2;//每次记得把m*=2,m就是2^x,
    }
    return ans;
    }
};

三.LCR 004. 只出现一次的数字 II

题目描述:

给出一个数组arr,除了一个只出现一次以外,数组中的数都出现了三次。求出只出现一次的那个数 x。

解题思路:

(1)哈希表统计最简单

(2)位运算

位运算主要通过计算32位比特位中,每一位在上述数组中出现的1次数,且第i位出现出现1的次数的可能只有三个,3n,3n+1,0。3n和0代表 x 中第i为不是1,3n+代表x的第i位是1.

这样我们可以得到只出现一次的数每一位比特位了。

代码:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        long ret=0;
        //遍历每一个元素的32个比特位
        //切记不能从低位 往 高位遍历,从遇到的第一位为1才开始算数值有效位
        for(int i=31;i>=0;i--)
        {
            int bits=0;
            for(auto e:nums)
            {
                if(e&(1<<i))bits++;
            } 
            bits%=3;
            //在遇到1之前ret一直是0
            ret=ret*2+bits;
        }
        return ret;
    }
};

四.LCR 011. 连续数组

题目描述:

给定一个二进制数组 nums , 找到含有相同数量的 01 的最长连续子数组,并返回该子数组的长度。

思路描述:

思路转换将数组中的0换成-1,那么问题就变成找到区间和为0的最长连续子数组,并返回该子数组的长度。

(1)dp:dp[i][j]代表i~j之间的和。

(2)前缀和,本质还是dp

(3)前缀和+哈希表

前缀和处理之后的数组之间是由规律的:

相同的前缀和之间的数(x,y],加一起就是0.hash表记录前缀和数据第一次出现的位置,后面再出现就可以直接求出长度。

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

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

相关文章

【企业级监控】Zabbix实现邮箱报警

Zabbix监控自动化 文章目录 Zabbix监控自动化资源列表基础环境前言四、Zabbix邮件告警4.1、实现报警所需的条件4.1.1、告警媒介4.1.2、触发器&#xff08;trigger&#xff09;4.1.3、动作&#xff08;action&#xff09; 4.2、配置告警媒介4.2.1、设置告警媒介参数4.2.2、启用此…

SpringCloud教程 | 第八篇: 使用seata处理分布式事务

1、参考程序员江小北 2、打算降低nacos版本&#xff0c;先学通再看看升级到高版本nacos能不能正常使用。 3、nacos用1.4.1&#xff0c;正常启动单机版的了 4、seata用2.0.0 我看江小北说用的1.4.0的seata&#xff0c;但是图片中的目录文件都找不到&#xff0c;倒是在2.0.0的…

弥合人类与人工智能的知识差距:AlphaZero 中的概念发现和迁移(1)

文章目录 一、摘要二、简介三、相关工作3.1 基于概念的解释3.2 强化学习中生成解释3.3 国际象棋与人工智能 四、什么是概念&#xff1f;五、发掘概念5.1 挖掘概念向量5.1.1 静态概念的概念约束5.1.2 动态概念的概念约束 5.2 过滤概念 一、摘要 人工智能&#xff08;AI&#xff…

计算机网络--tcpdump和iptable设置、内核参数优化策略

tcpdump工具 tcpdump命令&#xff1a; 选项字段&#xff1a; 过滤表达式&#xff1a; 实用命令&#xff1a; TCP三次握手抓包命令&#xff1a; #客户端执行tcpdump 抓取数据包 tcpdump -i etho tcp and host 192.168.12.36 and port 80 -W timeout.pcapnetstat命令 netst…

昇思25天学习打卡营第12天 | ResNet50图像分类

昇思25天学习打卡营第12天 | ResNet50图像分类 文章目录 昇思25天学习打卡营第12天 | ResNet50图像分类ResNet网络模型残差网络结构Building BlockBottleneck 训练数据准备训练数据可视化 网络构建Build Block结构Bottleneck结构ResNet50网络 模型训练与评估训练验证迭代数据集…

Swiftui中几种常用的数据存储方式@AppStorage/UserDefaults/CoreData/File Storage/Keychain等

在 SwiftUI 中&#xff0c;有多种常用的数据存储方式&#xff0c;根据需求的不同&#xff0c;可以选择适合的存储方案。以下是几种常用的数据存储方式&#xff1a; AppStorage/UserDefaults/CoreData/File Storage/Keychain&#xff0c;分别来看一下他们的使用场景和区别。 1.…

【Linux 文件读写描述符重定向 Linux 一切皆文件缓冲区】

文章目录 一、文件的读写操作二、文件描述符三、文件重定向四、理解 Linux 一切皆文件五、文件缓冲区 一、文件的读写操作 文件内容属性 当文件没有被操作的时候&#xff0c;一般文件还是在磁盘当中 文件操作文件内容的操作文件属性的操作&#xff0c;文件操作有可能即改变内容…

实战:docker式部署frp内网穿透-2024.7.13(测试成功)

前提 首先就需要准备好一台云服务器&#xff0c;用于提供公网 IP 和流量转发。至于购买哪家的云服务产品&#xff0c;本着能省则省的原则&#xff0c;这个当然是哪家便宜用哪家呢。 我手上目前有闲置的腾讯云的服务器&#xff0c;刚好可以用来作为内网穿透的机器&#xff0c;…

MySQL篇十:事务

文章目录 前言1. 什么是事务&#xff1f;2. 为什么会出现事务3. 事务的版本支持4. 事务提交方式5. 事务常见操作方式6. 事务隔离级别6.1 如何理解隔离性16.2 如何理解隔离性26.2.1 读-写6.2.2 undo 日志6.2.3 模拟 MVCC6.2.4 RR 与 RC的本质区别 前言 CURD不加控制&#xff0c;…

【探索Linux】P.39(传输层 —— TCP的三次 “握手” 和四次 “挥手” )

阅读导航 引言一、TCP的三次握手1. 简介2. 图解三次握手3. 名词解释&#xff08;1&#xff09;SYN&#xff08;同步序列编号&#xff09;包&#xff08;2&#xff09;SYN-ACK&#xff08;同步确认&#xff09;包&#xff08;3&#xff09;ACK&#xff08;确认&#xff09;包 4.…

【CTF-Crypto】数论基础-02

【CTF-Crypto】数论基础-02 文章目录 【CTF-Crypto】数论基础-021-16 二次剩余1-20 模p下-1的平方根*1-21 Legendre符号*1-22 Jacobi符号*2-1 群*2-2 群的性质2-3 阿贝尔群*2-4 子群2-11 群同态2-18 原根2-21 什么是环2-23 什么是域2-25 子环2-26 理想2-32 多项式环 1-16 二次剩…

C语言的神髓

从应用的角度出发&#xff0c;聊一聊C语言最精妙的部分。 ​​​​​​​ ​​​​​​​

unity 2020版本packManager没有AssetBundles

1.Packages->manifest.json打开manifest.json文件 2.添加"com.unity.assetbundlebrowser": "1.7.0", 保存即可

Readiris PDF Corporate / Business v23 解锁版安装教程 (PDF管理软件)

前言 Readiris PDF Corporate / Business 是一款高性能的 OCR&#xff08;光学字符识别&#xff09;软件&#xff0c;能够帮助用户将纸质文档、PDF 文件或图像文件转换为可编辑和可搜索的电子文本。该软件提供专业级的功能和特性&#xff0c;非常适合企业和商业使用。使用 Rea…

win10 docker-compose搭建ELK日志收集

elk的威名大家都知道&#xff0c;以前前司有专门的人维护&#xff0c;现在换了环境&#xff0c;实在不想上服务器看&#xff0c;所以就摸索下自己搭建&#xff0c;由于现场服务器是需要类似向日葵那样连接&#xff0c;我还是把日志弄回来&#xff0c;自己本地filebeat上传到es中…

【软件测试】LoadRunner | 基本概念 | VUG录制脚本 | 脚本加强 | Controller设计测试场景 | Analysis产生测试报告

文章目录 LoadRunner一、LoadRunner的基本概念功能:原理&#xff1a;组成&#xff1a; 二、开发测试脚本1.VUG录制脚本1.WebTours系统WebTours的配置&#xff1a;成功访问后进行注册 2.脚本录制3.运行&#xff08;回放&#xff09; 2.脚本加强1.插入事务插入函数:注意事项 2.插…

如何计算摄像头一个像素对应的实际面积(热成像仪选型1)

1. 前言 热成像仪广泛应用于缺陷检测&#xff0c;那么如何选择热成像仪&#xff0c;以满足缺陷检测需求&#xff1f;关键问题是&#xff1a;如何知道热成像仪能不能拍摄清楚我的缺陷呢&#xff1f;&#xff0c;要回答这个问题&#xff0c;就需要计算出热成像仪在最佳拍摄距离下…

2.5 OJ 网站的使用与作业全解

目录 1 OJ 网站如何使用 1.1 注册账户 1.2 登录账户 1.3 做题步骤 2 本节课的 OJ 作业说明 3 章节综合判断题 4 课时2作业1 5 课时2作业2 6 课时2作业3 1 OJ 网站如何使用 〇J 是英文 Online Judge 的缩写&#xff0c;中文翻译过来是在线判题。当用户将自己编写的代码…

浪潮天启防火墙TQ2000远程配置方法SSL-V偏、L2xx 配置方法

前言 本次设置只针对配置V偏&#xff0c;其他防火墙配置不涉及。建议把防火墙内外网都调通后再进行V偏配置。 其他配置可参考&#xff1a;浪潮天启防火墙配置手册 配置SSLVxx 在外网端口开启SSLVxx信息 开启SSLVxx功能 1、勾选 “启用SSL-Vxx” 2、设置登录端口号&#xff0…

ROS1 DWB 与 ROS2 DWA 比较

“DWA算法(dynamic window approach)是移动机器人在运动模型下推算(v,w)对应的轨迹,确定速度采样空间或者说是动态窗口(三种限制);在速度空间(v,w)中采样多组速度,并模拟这些速度在一定时间内的运动轨迹,通过一个评价函数对这些轨迹打分,选取最优的轨迹来驱动机器人运动”。ROS…