【代码随想录】刷题笔记Day39

news2025/2/6 2:58:47

前言

  • 下午答疑课过于无聊了,后台在跑代码也写不了作业,再刷点题吧~难得一天两篇

56. 合并区间 - 力扣(LeetCode)

  • 和之前重叠区间是同个类型,和res里的元素比较,重叠就更新res里最后元素的最右边界
  • class Solution {
    public:
        vector<vector<int>> merge(vector<vector<int>>& intervals) {
            vector<vector<int>> result;
            if (intervals.size() == 0) return result; // 区间集合为空直接返回
            // 排序的参数使用了lambda表达式
            sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b){return a[0] < b[0];});
    
            // 第一个区间就可以放进结果集里,后面如果重叠,在result上直接合并
            result.push_back(intervals[0]); 
    
            for (int i = 1; i < intervals.size(); i++) {
                if (result.back()[1] >= intervals[i][0]) { // 发现重叠区间
                    // 合并区间,只更新右边界就好,因为result.back()的左边界一定是最小值,因为我们按照左边界排序的
                    result.back()[1] = max(result.back()[1], intervals[i][1]); 
                } else {
                    result.push_back(intervals[i]); // 区间不重叠 
                }
            }
            return result;
        }
    };

 738. 单调递增的数字 - 力扣(LeetCode)

  • 暴力超时,从后往前遍历,如果前大于后,前-1,后全变9
  • class Solution {
    public:
    //从后往前遍历,如果前面的字符较大,则减1,后面的会更新成9
    	int monotoneIncreasingDigits(int n) {
    		string s = to_string(n);
    		int len = s.size();
    		int index = len;  //哪个地方往后需要全变成9
    		//初始化为len,因为如果像1234这样不需要更改的,index应从尾部+1开始变9
    		for (int i = len - 1; i > 0; i--) {
    			if (s[i - 1] > s[i]) {
    				s[i - 1]--;
    				index = i;
                // 这里不直接将s[i]变为9,是因为当两相邻数相等时,
                // 不会满足修改条件,最终结果不符合要求 ,
                // 如1000,后两位相等,最后结果会变成900,明显应该是999才对
    			}
    		}
    		for (int i = index ; i < len ;i++) s[i] = '9';
            //最后转为数字
            return stoi(s);
    	}
    };

 968. 监控二叉树 - 力扣(LeetCode)

  • 综合回溯(二叉树递归后序遍历) + 贪心(从叶子节点想覆盖)+ 各种考虑情况,直接抄
  • // 版本一
    class Solution {
    private:
        int result;
        int traversal(TreeNode* cur) {
    
            // 空节点,该节点有覆盖
            if (cur == NULL) return 2;
    
            int left = traversal(cur->left);    // 左
            int right = traversal(cur->right);  // 右
    
            // 情况1
            // 左右节点都有覆盖
            if (left == 2 && right == 2) return 0;
    
            // 情况2
            // left == 0 && right == 0 左右节点无覆盖
            // left == 1 && right == 0 左节点有摄像头,右节点无覆盖
            // left == 0 && right == 1 左节点有无覆盖,右节点摄像头
            // left == 0 && right == 2 左节点无覆盖,右节点覆盖
            // left == 2 && right == 0 左节点覆盖,右节点无覆盖
            if (left == 0 || right == 0) {
                result++;
                return 1;
            }
    
            // 情况3
            // left == 1 && right == 2 左节点有摄像头,右节点有覆盖
            // left == 2 && right == 1 左节点有覆盖,右节点有摄像头
            // left == 1 && right == 1 左右节点都有摄像头
            // 其他情况前段代码均已覆盖
            if (left == 1 || right == 1) return 2;
    
            // 以上代码我没有使用else,主要是为了把各个分支条件展现出来,这样代码有助于读者理解
            // 这个 return -1 逻辑不会走到这里。
            return -1;
        }
    
    public:
        int minCameraCover(TreeNode* root) {
            result = 0;
            // 情况4
            if (traversal(root) == 0) { // root 无覆盖
                result++;
            }
            return result;
        }
    };

后言

  • 正好5点结束!干饭去咯!去吃吃新修的怡膳堂怎么样!! 

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

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

相关文章

JavaScript 中的双等号(==)和三等号(===)有何不同?何时使用它们?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;JavaScript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-等号区别 目录 和 区别&#xff0c;分别在什么情况使用 一、等于操作符…

Vue与低代码开发:简化前端开发的强力组合

在当下瞬息万变的软件开发领域&#xff0c;前端开发的速率与效益显得尤为关键。为适应市场的不断变迁&#xff0c;开发者们致力于寻求更为快捷、高效的开发模式。因此&#xff0c;Vue框架与低代码开发平台受到了开发者们的高度关注。本文旨在探讨Vue框架与低代码开发的融合&…

如何在水经微图中加载调用长光卫星影像

我们在这里&#xff0c;再来分享长光卫星影像在水经微图中的加载方法。 如何获取地图服务地址 如果你还没有在长光的官网注册&#xff0c;请通过以下地址注册。 https://www.jl1mall.com/rskit/?agentCompanySJZ&agentfangfang 因为&#xff0c;只有注册之后才能获取到…

嵌入式——I2C原理代码结合(干货)看图易懂

学习目标 理解I2C通讯原理理解I2C通讯过程中的信号理解软件I2C实现过程理解硬件I2C的工作内容学习内容 I2C通讯规则 I2C总线包括两根信号线:SDA(串行数据线)和SCL(串行时钟线)。这两根信号线共用一个总线,因此在总线上可以连接多个设备。在I2C总线上,每个设备都有一个唯…

【数据结构】查找与排序

要查询信息&#xff0c;涉及两个问题&#xff1a; 在哪里查&#xff1f;——查找表 怎么查&#xff1f;——查找方法 一.查找 1.查找表的定义&#xff1a; 查找表是由同类型的数据元素构成的集合 2.对查找表的基本操作&#xff1a; 1&#xff09;查询某个数据元素是否在查…

【原创分享】DDR拓扑结构的详细解析

在进行多片DDR设计的时候&#xff0c;通常DDR会存在拓扑结构&#xff0c;下面我们将详细介绍一下各种拓扑结构的区别以以及应用场景。 首先我们先介绍一下&#xff0c;当只存在一片DDR的时候通常是采用点对点的连接方式&#xff0c;点对点的布线方式优点是结构简单&#xff0c…

git之UGit可视化工具使用

一、下载安装UGit 链接&#xff1a;https://pan.baidu.com/s/1KGJvWkFL91neI6vAxjGAag?pwdsyq1 提取码&#xff1a;syq1 二 、使用SSH进行远程仓库连接 1.生成SSH密钥 由于我们的本地 git仓库和 gitee仓库之间的传输是通过SSH加密的&#xff0c;所以我们需要配置SSH公钥。才…

瓷片图绘制教程,R语言ggplot2绘图笔记

瓷片图像地板砖一样&#xff0c;由许多个小格子组成&#xff0c;不用的颜色深浅可以用来表示不同的值&#xff0c;横轴和纵轴可以用来展示不同的位置&#xff0c;二维码图、马赛克图、热图等都有异曲同工之妙。 今天分享一个在R语言中利用ggplot2包绘制瓷片图的方法&#xff0c…

处理器类型简介

转载自&#xff1a;https://www.cnblogs.com/zamely/p/4334979.html 多核处理器也称片上多核处理器&#xff08;Chip Multi-Processor&#xff0c;CMP&#xff09;。 1.多核处理器的流行 多核出现前&#xff0c;商业化处理器都致力于单核处理器的发展&#xff0c;其性能已经…

轻量封装WebGPU渲染系统示例<54>- 表现GLB模型之拱形门

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/GLBMaterialTest.ts 当前示例运行效果: 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下: export class GLBMaterialTest {private mRscene new …

java内存溢出初步排查

java内存模型 java内存空间主要包括以下几个部分&#xff1a;方法区、堆内存、虚拟机栈、本地方法栈 方法区&#xff1a;主要存放已被加载的类信息&#xff0c;常量&#xff0c;静态变量等。堆内存&#xff1a;Java堆是JVM所管理的最大一块内存空间&#xff0c;几乎所有的对象…

【ai】阿里云 大模型 api 聚合平台 dashscope

阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 快速调用 前提条件 已开通服务并获得API-KEY&#xff1a;开通DashScope并创建API-KEY。 已安装最新版SDK&#xff1a;安装DashScope SDK。 DashScope灵积模型服务建立在“模型即服务”&#xff08;Model-a…

Sqlserver-查询和kill杀死正在运行的事务

Sqlserver-查询和kill杀死正在运行的事务 1.查询正在运行的事务2.杀死运行的事务Kill 1.查询正在运行的事务 SELECT session_id, task_state, pending_io_count, context_switches_count FROM sys.dm_os_tasks WHERE session_id > 50 ORDER BY task_state asc2.杀死运行的事…

【51单片机系列】DS18B20温度传感器模块

本文是关于温度传感器的相关内容。 文章目录 一、 DS18B20数字温度传感器介绍1.1、 DS18B20温度传感器的特点1.2、DA18B20内部结构1.3、 DS18B20的温度转换规则1.4、 DS18B20的ROM指令表1.6、 计算温度1.7、 读写时序 二、DS18B20使用示例 一、 DS18B20数字温度传感器介绍 DS1…

真心建议,入职业务部门前先学会BI数据分析

不管进入哪个业务部门&#xff0c;都需要具备一定的数据分析能力&#xff0c;能够从不断累积的数据中发现并解决问题。比如销售部门的需要通过分析销售数据&#xff0c;及时发现销售不佳的商品&#xff0c;调整销售策略&#xff0c;提高销售额、销售利润等。而随着精细化数据分…

一体式读卡器:引领数据读取新潮流

一体式读卡器&#xff1a;引领数据读取新潮流 随着科技的发展&#xff0c;读卡器在各个领域的应用越来越广泛&#xff0c;如工业自动化生产、身份认证、门禁控制、数据采集等。读卡器主要有两种类型&#xff1a;一体式读卡器和分体式读卡器。这两种类型的读卡器各有其优缺点&a…

Pr2024 for Mac/win中文版:为创意无限延展的全新时代

随着科技的不断进步和创新&#xff0c;影视制作行业也在不断发展。作为专业视频编辑软件的领军者&#xff0c;Premiere Pro于2024年推出了全新的版本Pr2024&#xff0c;为创意无限延展的全新时代揭开了崭新的篇章。 Pr2024以其强大的功能和卓越的性能&#xff0c;为用户带来了…

基于图搜索的自动驾驶规划算法 - BFS,Dijstra,A*

本文将讲解BFS&#xff0c;Dijstra&#xff0c;A*&#xff0c;动态规划的算法原理&#xff0c;不正之处望读者指正&#xff0c;希望有兴趣的读者能在评论区提出一些这些算法的面试考点&#xff0c;共同学习&#xff0c;一起进步 0 图论基础 图有三种&#xff1a;无向图、有向…

软件架构师的主要职责说明文(合集)

软件架构师的主要职责说明文1 职责&#xff1a; 1、挖掘和分析业务需求&#xff0c;对公司业务平台进行架构改进和升级设计&#xff0c;制定架构升级规划和过渡方案; 2、承担软件产品核心功能的开发工作&#xff0c;牵头保障整个系统不出现重大技术故障; 3、进行技术评估与产品…

有什么好用的C/C++源代码混淆工具?

​ 有什么好用的C/C源代码混淆工具&#xff1f; 开始使用ipaguard 前言 iOS加固保护是直接针对ios ipa二进制文件的保护技术&#xff0c;可以对iOS APP中的可执行文件进行深度混淆、加密。使用任何工具都无法逆向、破解还原源文件。对APP进行完整性保护&#xff0c;防止应用…