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

【代码随想录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. 合并区间 遇到了三个问题&#xff0c;一一说来&#xff1a; 1 比较应该按左区间排序&#xff0c;我却写了右区间。由于本题是合并区间&#xff0c;判断是否连续显然是用下一个的左区间与前一个的右区间比较&#xff0c;属于没想清楚了。 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远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多。请稍后片刻再重试,或与系统管理员或技术支持联系“问题

当我们远程连接服务器连接不上并提示“为安全考虑&#xff0c;已锁定该用户账户&#xff0c;原因是登录尝试或密码更改尝试过多。请稍候片刻再重试&#xff0c;或与系统管理员或技术支持联系”时&#xff0c;根本原因是当前计算机远程连接时输入了过多的错误密码&#xff0c;触…...

中文书籍对《人月神话》的引用(161-210本):微软的秘密

中文书籍对《人月神话》的引用&#xff08;第001到160本&#xff09;>> 《人月神话》于1975年出版&#xff0c;1995年出二十周年版。自出版以来&#xff0c;该书被大量的书籍和文章引用&#xff0c;直到现在热潮不退。 2023年&#xff0c;清华大学出版社推出《人月神话》…...

关于写React的一些反思和总结

这两个星期我都一直在写IT资产管理这个模块。关于这个模块&#xff0c;前端和后端都是我来处理&#xff0c;对于后端&#xff0c;我碰到了很多问题&#xff0c;但是很多问题都可以在比较短的时间内解决&#xff0c;而且不会说完全没有头绪的那种&#xff0c;这一方面源于我本身…...

Qt 每日面试题 -10

91、Qt设计界面有哪些方式? 手工编写创建界面的代码︰此方法比较复杂&#xff0c;不够直观;使用Qt Designer界面编辑器设计︰可直接拖放控件、设置控件的属性&#xff0c;简单、直观、易于操作;动态加载Ul文件并生成界面︰(QUiLoader类加载xx.ui)此方法很灵活&#xff0c;当需…...

三正科技笔试题

&#xff08;15题&#xff0c;45分钟&#xff0c;闭卷&#xff09; 一、( 8 分 &#xff09;请问以下程序输出什么结果&#xff1f; char *getStr(void) 。 &#xff5b; char p[] "hellow world"; return p; &#xff5d; void test(void) &#xff5b; ch…...

Selective attention improves transformer详细解读

Selective attention improves transformer Google 2024.10.3 一句话&#xff1a;简单且无需额外参数的选择性注意力机制&#xff0c;通过选择性忽略不相关信息并进行上下文剪枝&#xff0c;在不增加计算复杂度的情况下显著提升了Transformer模型的语言建模性能和推理效率。 论…...

git配置用户信息

在 Git 中配置用户信息&#xff0c;主要是设置你的用户名和电子邮件地址&#xff0c;这些信息会被 Git 用来记录提交的作者信息。以下是配置用户信息的步骤&#xff1a; 打开命令行工具。 设置你的用户名&#xff1a; git config --global user.name "你的名字"例如…...

【eNSP】路由基础与路由来源——静态路由实验

路由是数据包从源地址到目的地址的传输路径&#xff0c;静态路由是指网络管理员手动配置的路由条目&#xff0c;用于指定数据包从源地址到目的地址的固定路径。以下是关于静态路由的详细介绍。 一、路由的基础知识点 路由的定义&#xff1a; 路由是指在计算机网络中&#xff…...

Python Web 应用开发基础知识

Python Web 应用开发基础知识 引言 随着互联网的快速发展&#xff0c;Web 应用程序的需求日益增加。Python 作为一种简单易学且功能强大的编程语言&#xff0c;已经成为 Web 开发中广受欢迎的选择之一。本文将深入探讨 Python Web 开发的基础知识&#xff0c;包括常用框架、基…...

STM32 标准库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别

GPIO_SetBits&#xff1a; 使用例&#xff1a; GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);意思是将GPIOA1和GPIOA2设为高电平 GPIO_SetBits(GPIOA, 0x0003);意思也是将GPIOA1和GPIOA2设为高电平 实际上当选中GPIOA时&#xff0c;它会按位遍历&#xff0c;在哪一位有1说…...

【Redis_Day4】内部编码和单线程模型

【Redis_Day4】内部编码和单线程模型 五大数据类型内部编码object encoding key1&#xff1a;查询key1对应值的内部编码 redis中的单线程模型 redis中的数据都是以键值对的方式存的&#xff0c;redis内部用哈希表组织这些键值对。 五大数据类型 站在用户角度&#xff0c; 在一…...

Vue模块化开发的理解

Vue模块化是指在Vue.js开发中&#xff0c;将代码按功能拆分成多个独立的模块&#xff0c;以提高代码的可维护性、可读性和复用性。以下是对Vue模块化的详细理解&#xff1a; 一、Vue模块化的实现方式 组件化开发&#xff1a; Vue组件是模块化的基本单元&#xff0c;每个组件封…...

在Ubuntu22.04上源码构建ROS noetic环境

Ubuntu22.04上源码构建ROS noetic 起因准备环境创建工作目录并下载源码安装编译依赖包安装ros_comm和rosconsole包的两个补丁并修改pluginlib包的CMakeLists的编译器版本编译安装ROS noetic和ros_test验证 起因 最近在研究VINS-Mono从ROS移植到ROS2&#xff0c;发现在编写feat…...

算法--解决二叉树遍历问题

第一 实现树的结构 class Node(): # 构造函数&#xff0c;初始化节点对象&#xff0c;包含数据和左右子节点 def __init__(self, dataNone): self.data data # 节点存储的数据 self.left None # 左子节点&#xff0c;默认为None self.rig…...

[刷题]入门1.矩阵转置

博客主页&#xff1a;算法歌者本篇专栏&#xff1a;[刷题]您的支持&#xff0c;是我的创作动力。 文章目录 1、题目2、基础3、思路4、结果 1、题目 链接&#xff1a;洛谷-B2106-矩阵转置 2、基础 此题目主要考察二维数组的掌控能力。 3、思路 观察&#xff0c;可知&#…...

Flutter开发之flutter_local_notifications

flutter_local_notifications 消息通知 flutter_local_notifications地址 flutter_local_notifications: ^18.0.1class NotificationHelper {//工厂模式调用该类时&#xff0c;默认调用此方法&#xff0c;将实例对象返回出去static NotificationHelper? _instance null;sta…...

Gradle和maven

大家好&#xff0c;我是风筝 作为Java 开发者&#xff0c;你平时用 Maven 还是 Gradle&#xff1f; 我一直用的都是 Maven&#xff0c;但是前几天做了一个小项目&#xff0c;用的是 Gradle&#xff0c;因为项目创建出来默认就是用的 Gradle&#xff0c;而且功能足够简单&#x…...

RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)

文章目录 RabbitMQ教程&#xff1a;发布/订阅模式&#xff08;Publish/Subscribe&#xff09;&#xff08;三&#xff09;一、引言二、简介三、准备工作3.1 说明3.2 生成项目 四、实战4.1 交换机&#xff08;Exchanges&#xff09;4.2 临时队列&#xff08;Temporary Queues&am…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类&#xff0c;直接把源文件拖进VS的项目里&#xff0c;然后VS卡住十秒&#xff0c;然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分&#xff0c;导致编译的时候找不到了。因…...

Qt Quick Controls模块功能及架构

Qt Quick Controls是Qt Quick的一个附加模块&#xff0c;提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中&#xff0c;这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构&#xff0c;与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...

【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战

🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...

Electron简介(附电子书学习资料)

一、什么是Electron&#xff1f; Electron 是一个由 GitHub 开发的 开源框架&#xff0c;允许开发者使用 Web技术&#xff08;HTML、CSS、JavaScript&#xff09; 构建跨平台的桌面应用程序&#xff08;Windows、macOS、Linux&#xff09;。它将 Chromium浏览器内核 和 Node.j…...

第14节 Node.js 全局对象

JavaScript 中有一个特殊的对象&#xff0c;称为全局对象&#xff08;Global Object&#xff09;&#xff0c;它及其所有属性都可以在程序的任何地方访问&#xff0c;即全局变量。 在浏览器 JavaScript 中&#xff0c;通常 window 是全局对象&#xff0c; 而 Node.js 中的全局…...