【代码随想录day31】【C++复健】56. 合并区间;738.单调递增的数字
56. 合并区间
遇到了三个问题,一一说来:
1 比较应该按左区间排序,我却写了右区间。由于本题是合并区间,判断是否连续显然是用下一个的左区间与前一个的右区间比较,属于没想清楚了。
2 在写for循环时写成了如下的代码:
但margin不应该取i+1,因为在这种情况下,第i号的intervals实际上还没有被添加到结果集result里面,所以应该是令margin=intervals[i]才是对的。
for(int i=0; i<intervals.size(); i++){if(margin[1] >= intervals[i][0]){margin[1] = max(intervals[i][1], margin[1]);}else{result.push_back(margin);if(i != intervals.size()-1){margin = intervals[i+1];}}}
3 提交后发现速度只击败了10%
换成了Lambda 表达式一下从134ms变成了7ms,问了下GPT:

并且自己对lambda表达式的定义方法也还需要再熟悉。
class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end(), [](vector<int> &val1, vector<int> &val2) {return val1[0] < val2[0];});vector<int> margin = intervals[0];vector<vector<int>> result;for(int i=1; i<intervals.size(); i++){if(margin[1] >= intervals[i][0]){margin[1] = max(intervals[i][1], margin[1]);}else{result.push_back(margin);margin = intervals[i];}}result.push_back(margin);return result;}
738.单调递增的数字
没看解析前自己想的方法逻辑有漏洞,还以为结果不是原始的n就是x999,但实际上并非如此;
实际上的规则应该是:从哪一位开始违反递增规则,就把其后面的数全都置为9,并且将当前位置元素值-1,然后当前位置元素值发生变化有可能会影响与前面元素的大小关系。因此,这使得遍历顺序需要从后往前。
看完了解析后,自己写了一版,只能用麻烦来形容:
class Solution {
public:int monotoneIncreasingDigits(int n) {deque<int> nums;int slice = n;int cur = 0;int pre = 9;while(slice > 0){ cur = slice - int(slice/10)*10;slice = slice/10;if(pre < cur){for(int i=0; i<nums.size(); i++){nums[i] = 9;}nums.push_front(cur-1);pre = cur - 1;}else{nums.push_front(cur);pre = cur;}}int result = 0;int length = nums.size();for(int i=0; i<length; i++){result = result*10 + nums[i];}return result;}
};
主要麻烦在了2个方面:
1 没把int直接转string,如果转了的话不仅可以直接访问每一位对应的值,还可以直接通过s.size()知道这个数有几位,这些都是int无法做到的。我直接用int写,多写了很多才达到相同效果,包括获取每一位的代码,以及最后转回int的代码,都要比str费事。
2 每次发现一个位置不行的时候,不需要立刻在原处就执行一遍9的替换和当前位置-1,因为前面的位置上还有可能出状况,现在做了替换很有可能是白干。只要用一个参数记录最靠前的出问题的位置,然后这个位置-1,后面全用9替换即可。这样做下来确实思路更清晰更好。
相关文章:
【代码随想录day31】【C++复健】56. 合并区间;738.单调递增的数字
56. 合并区间 遇到了三个问题,一一说来: 1 比较应该按左区间排序,我却写了右区间。由于本题是合并区间,判断是否连续显然是用下一个的左区间与前一个的右区间比较,属于没想清楚了。 2 在写for循环时写成了如下的代码…...
jmeter常用配置元件介绍总结之逻辑控制器
系列文章目录 安装jmeter jmeter常用配置元件介绍总结之逻辑控制器 逻辑控制器1.IF控制器2.事务控制器3.循环控制器4.While控制器5.ForEach控制器6.Include控制器7.Runtime控制器8.临界部分控制器9.交替控制器10.仅一次控制器11.简单控制器12.随机控制器13.随机顺序控制器14.吞…...
解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多。请稍后片刻再重试,或与系统管理员或技术支持联系“问题
当我们远程连接服务器连接不上并提示“为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多。请稍候片刻再重试,或与系统管理员或技术支持联系”时,根本原因是当前计算机远程连接时输入了过多的错误密码,触…...
中文书籍对《人月神话》的引用(161-210本):微软的秘密
中文书籍对《人月神话》的引用(第001到160本)>> 《人月神话》于1975年出版,1995年出二十周年版。自出版以来,该书被大量的书籍和文章引用,直到现在热潮不退。 2023年,清华大学出版社推出《人月神话》…...
关于写React的一些反思和总结
这两个星期我都一直在写IT资产管理这个模块。关于这个模块,前端和后端都是我来处理,对于后端,我碰到了很多问题,但是很多问题都可以在比较短的时间内解决,而且不会说完全没有头绪的那种,这一方面源于我本身…...
Qt 每日面试题 -10
91、Qt设计界面有哪些方式? 手工编写创建界面的代码︰此方法比较复杂,不够直观;使用Qt Designer界面编辑器设计︰可直接拖放控件、设置控件的属性,简单、直观、易于操作;动态加载Ul文件并生成界面︰(QUiLoader类加载xx.ui)此方法很灵活,当需…...
三正科技笔试题
(15题,45分钟,闭卷) 一、( 8 分 )请问以下程序输出什么结果? char *getStr(void) 。 { char p[] "hellow world"; return p; } void test(void) { ch…...
Selective attention improves transformer详细解读
Selective attention improves transformer Google 2024.10.3 一句话:简单且无需额外参数的选择性注意力机制,通过选择性忽略不相关信息并进行上下文剪枝,在不增加计算复杂度的情况下显著提升了Transformer模型的语言建模性能和推理效率。 论…...
git配置用户信息
在 Git 中配置用户信息,主要是设置你的用户名和电子邮件地址,这些信息会被 Git 用来记录提交的作者信息。以下是配置用户信息的步骤: 打开命令行工具。 设置你的用户名: git config --global user.name "你的名字"例如…...
【eNSP】路由基础与路由来源——静态路由实验
路由是数据包从源地址到目的地址的传输路径,静态路由是指网络管理员手动配置的路由条目,用于指定数据包从源地址到目的地址的固定路径。以下是关于静态路由的详细介绍。 一、路由的基础知识点 路由的定义: 路由是指在计算机网络中ÿ…...
Python Web 应用开发基础知识
Python Web 应用开发基础知识 引言 随着互联网的快速发展,Web 应用程序的需求日益增加。Python 作为一种简单易学且功能强大的编程语言,已经成为 Web 开发中广受欢迎的选择之一。本文将深入探讨 Python Web 开发的基础知识,包括常用框架、基…...
STM32 标准库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别
GPIO_SetBits: 使用例: GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);意思是将GPIOA1和GPIOA2设为高电平 GPIO_SetBits(GPIOA, 0x0003);意思也是将GPIOA1和GPIOA2设为高电平 实际上当选中GPIOA时,它会按位遍历,在哪一位有1说…...
【Redis_Day4】内部编码和单线程模型
【Redis_Day4】内部编码和单线程模型 五大数据类型内部编码object encoding key1:查询key1对应值的内部编码 redis中的单线程模型 redis中的数据都是以键值对的方式存的,redis内部用哈希表组织这些键值对。 五大数据类型 站在用户角度, 在一…...
Vue模块化开发的理解
Vue模块化是指在Vue.js开发中,将代码按功能拆分成多个独立的模块,以提高代码的可维护性、可读性和复用性。以下是对Vue模块化的详细理解: 一、Vue模块化的实现方式 组件化开发: Vue组件是模块化的基本单元,每个组件封…...
在Ubuntu22.04上源码构建ROS noetic环境
Ubuntu22.04上源码构建ROS noetic 起因准备环境创建工作目录并下载源码安装编译依赖包安装ros_comm和rosconsole包的两个补丁并修改pluginlib包的CMakeLists的编译器版本编译安装ROS noetic和ros_test验证 起因 最近在研究VINS-Mono从ROS移植到ROS2,发现在编写feat…...
算法--解决二叉树遍历问题
第一 实现树的结构 class Node(): # 构造函数,初始化节点对象,包含数据和左右子节点 def __init__(self, dataNone): self.data data # 节点存储的数据 self.left None # 左子节点,默认为None self.rig…...
[刷题]入门1.矩阵转置
博客主页:算法歌者本篇专栏:[刷题]您的支持,是我的创作动力。 文章目录 1、题目2、基础3、思路4、结果 1、题目 链接:洛谷-B2106-矩阵转置 2、基础 此题目主要考察二维数组的掌控能力。 3、思路 观察,可知&#…...
Flutter开发之flutter_local_notifications
flutter_local_notifications 消息通知 flutter_local_notifications地址 flutter_local_notifications: ^18.0.1class NotificationHelper {//工厂模式调用该类时,默认调用此方法,将实例对象返回出去static NotificationHelper? _instance null;sta…...
Gradle和maven
大家好,我是风筝 作为Java 开发者,你平时用 Maven 还是 Gradle? 我一直用的都是 Maven,但是前几天做了一个小项目,用的是 Gradle,因为项目创建出来默认就是用的 Gradle,而且功能足够简单&#x…...
RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)
文章目录 RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)一、引言二、简介三、准备工作3.1 说明3.2 生成项目 四、实战4.1 交换机(Exchanges)4.2 临时队列(Temporary Queues&am…...
NotebookLM溯源结果不显示原文页码?紧急补丁已部署!2024Q3最新API v2.3溯源增强版深度解读
更多请点击: https://intelliparadigm.com 第一章:NotebookLM溯源功能演进与v2.3核心定位 NotebookLM 自 2023 年初发布以来,其“溯源”能力经历了从静态引用标注到动态上下文感知的显著跃迁。早期版本仅支持对上传文档片段生成粗粒度来源标…...
一颗“语音前端 DSP”到底能解决多少现实问题?
在做音频产品开发这些年里,我接触过不少“语音处理模组”。但很多产品都有一个共同问题: 参数看起来很漂亮,真正落地时却很难调。尤其是下面这些场景:麦克风和喇叭距离太近,疯狂啸叫回音消除效果差,一开大音…...
手把手教你学Simulink——新能源并网逆变器的最大功率点跟踪(MPPT)与并网联合仿真
目录 手把手教你学Simulink——新能源并网逆变器的最大功率点跟踪(MPPT)与并网联合仿真 一、背景与挑战 1.1 为什么新能源并网离不开 MPPT? 1.2 核心痛点与设计目标 二、系统架构与核心控制推导 2.1 整体架构:DC 级联的“能量接力棒” 2.2 核心数学推导:看穿 MPPT 的…...
3分钟极速激活:KMS智能激活工具让你的Windows和Office永久免费使用
3分钟极速激活:KMS智能激活工具让你的Windows和Office永久免费使用 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文…...
零基础实战:在AutoDL云端一键部署GPT-SoVITS并实现音色克隆API调用
1. 为什么选择AutoDL部署GPT-SoVITS 第一次接触音色克隆技术时,我和很多人一样被两个问题困扰:本地电脑配置不够怎么办?复杂的Linux环境怎么配置?直到发现AutoDL这个云端算力平台,所有问题迎刃而解。这里实测用RTX3090…...
保姆级教程:在IMX6ULL开发板上手把手实现红外遥控器驱动(基于NEC协议与Linux 5.x内核)
从零构建IMX6ULL红外遥控驱动:NEC协议全解析与Linux 5.x实战指南 当你想在嵌入式设备上实现红外遥控功能时,NEC协议驱动的开发往往是第一个需要攻克的堡垒。本文将带你深入理解红外通信原理,并手把手完成从硬件连接到驱动测试的全流程。不同于…...
ARM Cortex-R中断处理与ECC机制详解
1. ARM Cortex-R中断处理机制深度解析在嵌入式实时系统中,中断处理机制的设计直接影响系统的响应速度和可靠性。ARM Cortex-R系列处理器作为面向实时控制应用的处理器架构,其中断处理系统经过精心设计,能够满足工业控制、汽车电子等领域的严苛…...
SmartDock:如何在Android设备上构建高效桌面环境
SmartDock:如何在Android设备上构建高效桌面环境 【免费下载链接】smartdock A user-friendly desktop mode launcher that offers a modern and customizable user interface 项目地址: https://gitcode.com/gh_mirrors/smar/smartdock 当Android设备从手机…...
英特尔马来西亚六厂布局:先进封装如何重塑半导体制造与供应链
1. 项目概述:从一则新闻到半导体制造的全球拼图前几天,行业里不少朋友都在转一条消息,说英特尔在马来西亚的封装产能布局又有新动作,计划要搞到六座工厂的规模。乍一看,这好像就是个普通的海外建厂新闻,但如…...
手把手教你用逻辑分析仪抓取RF433遥控器信号(附我家窗帘遥控器完整解码过程)
手把手教你用逻辑分析仪抓取RF433遥控器信号(附我家窗帘遥控器完整解码过程) 无线遥控技术早已渗透进日常生活,从车库门到智能窗帘,这些设备背后的RF433MHz通信协议却像黑匣子般神秘。本文将用一台百元级的逻辑分析仪和常见的超外…...
