当前位置: 首页 > news >正文

代码随想录算法训练营day31 | 56. 合并区间、738.单调递增的数字

碎碎念:加油
参考:代码随想录

56. 合并区间

题目链接

56. 合并区间

思想

这道题的核心还是判断重叠区间,本题和之前做过的452. 用最少数量的箭引爆气球、435. 无重叠区间的区别在于判断出重叠区间之后的操作,本题需要做的是合并重叠区间。
首先要让重叠的区间尽可能挨在一起,那么就要对区间排序,本解法用的是对左边界排序。
遍历所有区间,如果当前遍历到的区间的左边界小于等于上一个区间的右边界,那么就发生了重叠,需要继续合并区间的操作,具体做法是修改区间的右边界;如果当前遍历到的区间的左边界大于上一个区间的右边界,没有发生重叠,把上一个区间加入result即可。

题解

class Solution {
public:static bool cmp (const vector<int>& a, const vector<int>& b){return a[0] < b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {vector<vector<int>> result;if (intervals.size() == 0) return result;sort(intervals.begin(), intervals.end(), cmp);result.push_back(intervals[0]);for (int i = 1; i < intervals.size(); i++) {if (intervals[i][0] <= result.back()[1]) {result.back()[1] = max(intervals[i][1], result.back()[1]);} else {result.push_back(intervals[i]);}}return result;} 
};
class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:result = []if len(intervals) == 0:return resultintervals.sort(key=lambda x:x[0])result.append(intervals[0])for i in range(1, len(intervals)):if result[-1][1] >= intervals[i][0]:result[-1][1] = max(result[-1][1], intervals[i][1])else:result.append(intervals[i])return result

反思

不建议像之前一些题的做法一样在原数组上修改,防止遍历的时候混乱。

738.单调递增的数字

题目链接

738.单调递增的数字

思想

遍历数字的每一位,如果发现两位不符合要求,要对前一位减一,后一位要取最大的9。应该从后往前遍历,否则得到的可能不符合题意。
定义了一个flag,表示某一位往后都是9。

题解

class Solution {
public:int monotoneIncreasingDigits(int n) {string str = to_string(n);int flag = str.size(); for (int i = str.size() - 1; i > 0; i--) {if (str[i - 1] > str[i]) {str[i - 1]--;flag = i;}}for (int i = flag; i < str.size(); i++) {str[i] = '9';}return stoi(str);}
};
class Solution:def monotoneIncreasingDigits(self, n: int) -> int:strNum = str(n)flag = len(strNum)for i in range(len(strNum) - 1, 0, -1):if strNum[i - 1] > strNum[i]:flag = istrNum = strNum[:i - 1] + str(int(strNum[i - 1]) - 1) + strNum[i:]for i in range(flag, len(strNum)):strNum = strNum[:i] + '9' +strNum[i+1:]return int(strNum)

反思

传入的是int类型的,为了方便遍历把它转换为string类型的。
注意关于flag的处理,为什么设置这样的初始值。

相关文章:

代码随想录算法训练营day31 | 56. 合并区间、738.单调递增的数字

碎碎念&#xff1a;加油 参考&#xff1a;代码随想录 56. 合并区间 题目链接 56. 合并区间 思想 这道题的核心还是判断重叠区间&#xff0c;本题和之前做过的452. 用最少数量的箭引爆气球、435. 无重叠区间的区别在于判断出重叠区间之后的操作&#xff0c;本题需要做的是合…...

利用 Python 制作图片轮播应用

在这篇博客中&#xff0c;我将向大家展示如何使用 xPython 创建一个图片轮播应用。这个应用能够从指定文件夹中加载图片&#xff0c;定时轮播&#xff0c;并提供按钮来保存当前图片到收藏夹或仅轮播收藏夹中的图片。我们还将实现退出按钮和全屏显示的功能。 C:\pythoncode\new\…...

报表系统之Cube.js

Cube.js 是一个开源的分析框架&#xff0c;专为构建数据应用和分析工具而设计。它的主要目的是简化和加速构建复杂的分析和数据可视化应用。以下是对 Cube.js 的详细介绍&#xff1a; 核心功能和特点 1. 多数据源支持 Cube.js 支持从多个数据源中提取数据&#xff0c;包括 SQ…...

代码随想录算法训练营第45天

115.不同的子序列 但相对于刚讲过 392.判断子序列&#xff0c;本题 就有难度了 &#xff0c;感受一下本题和 392.判断子序列 的区别。 代码随想录 class Solution {public int numDistinct(String s, String t) {int lenS s.length();int lenT t.length();int[][] dp new …...

solidity合约创建

合约可以通过使用new关键字来创建其他合约的实例。 这个过程会执行被创建合约的构造函数&#xff08;如果存在的话&#xff09;&#xff0c;并返回一个指向新创建合约的地址的引用。 这种方式允许智能合约动态地在区块链上部署新合约&#xff0c;并与它们交互。 通过 new 创…...

队列---循环队列实现

循环队列详解 概述 循环队列是一种基于数组实现的队列数据结构&#xff0c;其中队列的队首和队尾是通过模运算连接起来形成一个逻辑上的环形结构。这样可以有效地利用数组的空间&#xff0c;避免出现“假溢出”的情况。 结构体定义 循环队列的结构体定义如下&#xff1a; …...

【视频讲解】后端增删改查接口有什么用?

B站视频地址 B站视频地址 前言 “后端增删改查接口有什么用”&#xff0c;其实这句话可以拆解为下面3个问题。 接口是什么意思&#xff1f;后端接口是什么意思&#xff1f;后端接口中的增删改查接口有什么用&#xff1f; 1、接口 概念&#xff1a;接口的概念在不同的领域中…...

双指针hard题

[LeetCode]4. Median of Two Sorted Arrays 中文 - YouTube 依赖merge sort和priorityqueue的废物 正式变身山景城一姐小迷妹✪ω✪ 寻找正序数组中位数 class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int len1 nums1.length;int len2 …...

前端实现【 批量任务调度管理器 】demo优化

一、前提介绍 我在前文实现过一个【批量任务调度管理器】的 demo&#xff0c;能实现简单的任务批量并发分组&#xff0c;过滤等操作。但是还有很多优化空间&#xff0c;所以查找一些优化的库&#xff0c; 主要想优化两个方面&#xff0c; 上篇提到的&#xff1a; 针对 3&…...

【数据结构】包装类和泛型

&#x1f389;欢迎大家收看&#xff0c;请多多支持&#x1f339; &#x1f970;关注小哇&#xff0c;和我一起成长&#x1f680;个人主页&#x1f680; ⭐在更专栏Java ⭐数据结构 ⭐已更专栏有C语言、计算机网络⭐ &#x1f451;目录 包装类&#x1f319; ⭐基本类型对应的包…...

浅学爬虫-数据存储

在数据爬取完成后&#xff0c;我们需要将数据存储起来&#xff0c;以便于后续的分析和处理。常见的数据存储方式包括存储到CSV文件和存储到数据库。下面我们详细介绍如何实现这些存储方式。 存储到CSV CSV&#xff08;Comma-Separated Values&#xff09;文件是一种常用的文本…...

十六、maven git-快速上手(智慧云教育平台)

&#x1f33b;&#x1f33b; 目录 一、概述及项目管理工具介绍1.1 项目介绍1.2 maven 介绍及其配置1.2.1 maven 介绍1.2.2 maven 下载与配置 1.3 pom 中常见标签的使用1.4 后端项目环境的搭建1.5 Git 简介1.6 Git 的基本使用1.6.1 码云的注册与仓库创建1.6.2 上传代码到码云仓库…...

chrome/edge浏览器插件开发入门与加载使用

同学们可以私信我加入学习群&#xff01; 正文开始 前言一、插件与普通前端项目二、开发插件——manifest.json三、插件使用edge浏览器中使用/加载插件chrome浏览器中使用/加载插件 总结 前言 chrome插件的出现&#xff0c;初衷可能是为了方便用户更好地控制浏览器&#xff0c…...

【完美解决】 TypeError: ‘str’ object does not support item assignment

【完美解决】 TypeError: ‘str’ object does not support item assignment 在Python编程中&#xff0c;遇到TypeError: str object does not support item assignment这样的错误通常意味着你试图修改字符串中的某个字符&#xff0c;但字符串是不可变类型&#xff0c;不支持这…...

Android SurfaceFlinger——渲染开始帧(四十三)

通过前面的文章我们介绍了 SurfaceFlinger 图层合成的整体流程,已经对应步骤的前五步,这里我们开始介绍帧渲染流程的第一步——开始帧。 1.更新输出设备的色彩配置文件2.更新与合成相关的状态3.计划合成帧图层4.写入合成状态5.设置颜色矩阵6.开始帧7.准备帧数据以进行显示(异…...

fastadmin搜索栏实现某字段动态下拉搜索

记录&#xff1a;fastadmin搜索栏实现某字段动态下拉搜索 方式一&#xff1a;使用selectpicker组件&#xff0c;可多选 { field: travel_agency, title:__(Travel_agency),addClass:"selectpicker", operate:"IN",data:"multiple", searchList:…...

.NET未来路在何方?

简述 在软件开发的漫长旅程中&#xff0c;将代码打包成可执行的EXE文件是一项必不可少的技能。它不仅能够保护源代码&#xff0c;还能为用户提供便捷的安装体验。但手动打包过程繁琐且容易出错&#xff0c;自动化打包成为了开发者的福音。 在软件开发的浩瀚星空中&#xff0c;.…...

Vue开发环境搭建

文章目录 引言I 安装NVM1.1 Windows系统安装NVM,实现Node.js多版本管理1.2 配置下载镜像1.3 NVM常用操作命令II VUE项目的基础配置2.1 制定不同的环境配置2.2 正式环境隐藏日志2.3 vscode常用插件引言 开发工具: node.js 、npm 开发编辑器:vscode 开发框架:VUE I 安装NVM…...

【数据结构初阶】详解:实现循环队列、用栈实现队列、用队列实现栈

文章目录 一、循环队列1、题目简述2、方法讲解2.1、了解tail的指向2.2、了解空间是如何利用的2.3、如何判断队列是否为空&#xff08;假溢出问题&#xff09;&#xff1f;2.4、实现代码 二、用栈实现队列1、题目简述2、方法讲解2.1、讲解2.2、实现代码 三、用队列实现栈1、题目…...

【Hot100】LeetCode—31. 下一个排列

目录 题目1- 思路2- 实现⭐31. 下一个排列——题解思路 3- ACM 实现 题目 原题连接&#xff1a;31. 下一个排列 1- 思路 技巧题&#xff0c;分为以下几个步骤 ① 寻找拐点&#xff1a; i 1 &#xff1a;出现 nums[i1] > nums[i] &#xff0c;则 i 1 就是拐点 从右向左遍…...

算法题(回溯)

一、题目1、括号生成&#xff08;LC 22&#xff09;2、单词搜索&#xff08;LC 79&#xff09;二、题解1、括号生成&#xff08;LC 22&#xff09;&#xff08;1&#xff09;分析采用回溯的思想解决。递归方法包括 left、right、ans、path、n 五个核心参数&#xff0c;其中 lef…...

仅剩72小时可获取的2026终极对比手册(含Prompt工程调优参数表、国产信创环境适配补丁包、等保2.0三级适配验证清单):ChatGPT与Gemini,你选错一个就多花237万年运维成本

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT与Gemini 2026年全面对比的基准定义与评估范式 为确保跨模型评估的科学性与可复现性&#xff0c;2026年主流AI基准已统一采用**多维动态评估范式&#xff08;MDEP&#xff09;**&#xff0c;该范…...

微型环境传感器技术:PM2.5与VOC检测的突破与应用

1. 个人空气质量监测的技术革命在深圳的一个典型工作日早晨&#xff0c;张工程师像往常一样准备出门上班。他习惯性地查看手机上的空气质量指数&#xff0c;发现室外PM2.5数值高达85μg/m&#xff08;超过WHO安全标准3倍以上&#xff09;。犹豫片刻后&#xff0c;他戴上了N95口…...

Elasticsearch实战:从索引设计到性能优化的完整指南

Elasticsearch实战&#xff1a;从索引设计到性能优化的完整指南 大家好&#xff0c;我是迪哥。Elasticsearch 是我们系统的核心搜索组件&#xff0c;从商品搜索到日志分析&#xff0c;从全文检索到聚合分析&#xff0c;它无处不在。今天就聊聊 ES 的索引设计和性能优化经验。 索…...

Sora提示词失效警告!:Instagram Reels专属Prompt架构(含12个平台敏感词规避指令+ASMR音画同步触发词库)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Sora提示词失效的底层归因与Instagram Reels内容生态断层分析 提示词语义坍缩现象 Sora模型在生成短视频时&#xff0c;对自然语言提示词的响应呈现显著退化&#xff1a;同一提示词&#xff08;如“su…...

分布式缓存策略:提升应用性能和可扩展性

分布式缓存策略&#xff1a;提升应用性能和可扩展性 一、分布式缓存概述 1.1 分布式缓存的定义 分布式缓存是一种将数据存储在多个节点上的缓存系统&#xff0c;它通过在内存中存储常用数据&#xff0c;减少对后端数据库的访问&#xff0c;从而提高应用性能和可扩展性。 1.…...

oh-my-prompt:模块化终端提示符引擎的设计、配置与性能优化

1. 项目概述&#xff1a;一个为现代终端量身定制的提示符引擎如果你和我一样&#xff0c;每天有超过一半的工作时间是在终端&#xff08;Terminal&#xff09;里度过的&#xff0c;那么一个高效、美观且信息丰富的命令行提示符&#xff08;Prompt&#xff09;绝对能让你事半功倍…...

中文智能体协作框架agency-agents-zh:从原理到实战搭建多AI智能体系统

1. 项目概述&#xff1a;一个中文智能体协作框架的诞生最近在开源社区里&#xff0c;一个名为jnMetaCode/agency-agents-zh的项目引起了我的注意。作为一名长期关注AI应用落地的开发者&#xff0c;我深知“智能体”这个概念从学术论文走向实际工程应用&#xff0c;中间隔着巨大…...

算法创新驱动AI效率革命:算力增强型进步如何超越摩尔定律

1. 项目概述&#xff1a;算法进步如何重塑计算机视觉的效率版图如果你在2012年告诉一个计算机视觉研究员&#xff0c;十年后我们能在ImageNet上训练出准确率超过90%的模型&#xff0c;他可能会觉得这需要天文数字般的计算资源。但现实是&#xff0c;我们不仅做到了&#xff0c;…...

代码所有权的悖论:集体智慧与个人责任的边界

代码世界的身份迷局在软件测试的日常工作中&#xff0c;我们时常会陷入这样的困惑&#xff1a;当面对一行引发系统崩溃的代码时&#xff0c;究竟该追溯到最初编写它的开发者&#xff0c;还是问责于后续不断迭代维护的团队&#xff1f;当一个历经数十人之手、跨越数年周期的模块…...