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

news2025/4/21 3:16:00

56. 合并区间

这道题跟452. 用最少数量的箭引爆气球 (opens new window)和 435. 无重叠区间 (opens new window)都是一个套路。

回了上面两个这道题并不难  这题主要就是发现重叠后更新一下当前元素的起始范围

if (intervals[i][0] <= intervals[i-1][1]) {
                intervals[i][0] = intervals[i-1][0];
                intervals[i][1] = max(intervals[i][1], intervals[i-1][1]);
            }
else {
        result.push_back(intervals[i-1]);
     }

我是按左边的范围排序的代码如下:

class Solution {
public:
    static bool cmp(vector<int>& a, vector<int>& b) {   
        return a[0] < b[0];
    }
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        vector<vector<int>> result;
        if (intervals.size() <= 1) return intervals;
        sort(intervals.begin(), intervals.end(), cmp);
        int i = 1;
        for (i = 1; i < intervals.size(); i++) {
            if (intervals[i][0] <= intervals[i-1][1]) {
                intervals[i][0] = intervals[i-1][0];
                intervals[i][1] = max(intervals[i][1], intervals[i-1][1]);
            }
            else {
                result.push_back(intervals[i-1]);
            }
        }
        result.push_back(intervals[i-1]);
        return result;
    }
};
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. 单调递增的数字

这道题用暴力方法可以做但是会超时

class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        for (int i = n; i > 0; i--) {
            int num = i;
            while (num) {
                int ge = num % 10;
                int shi = num / 10 % 10;
                if (shi > ge) break;
                else num /= 10;
            }
            if (num != 0) continue;
            return i;
        }
        return n;
    }
};

代码随想录的方法比较难想 并且也有一些细节处理很重要 要不然想到这个方法也很难跑通 还有就是string 的库的调用

string strNum = to_string(N);  //整数转字符串
stoi(strNum);// 整数转对应的字符串

class Solution {
public:
    int monotoneIncreasingDigits(int N) {
        string strNum = to_string(N);
        // flag用来标记赋值9从哪里开始
        // 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行
        int flag = strNum.size();
        for (int i = strNum.size() - 1; i > 0; i--) {
            if (strNum[i - 1] > strNum[i] ) {
                flag = i;
                strNum[i - 1]--;
            }
        }
        for (int i = flag; i < strNum.size(); i++) {
            strNum[i] = '9';
        }
        return stoi(strNum);
    }
};

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

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

相关文章

解决在window资源管理器的地址栏中输入\\192.168.x.x\sambashare之后显示无法访问,错误代码 0x80070035,找不到网络路径。

一、错误重现 二、解决方法 1、在cmd中输入gpedit.msc gpedit.msc确定 -> 打开本地组策略编辑器 2、启用不安全的来宾登录 计算机配置 -> 管理模板 -> 网络 -> Lanman工作站 -> 右侧双击编辑"启用不安全的来宾登录"&#xff0c;把状态改为 “已启…

unity知识点 专项四 一文彻底说清楚(锚点(anchor)、中心点(pivot)、位置(position)之间的关系)

一 概述 想要使UI控件在屏幕中达到正确的显示效果&#xff0c;比如自适应屏幕尺寸、固定边距等等&#xff0c;首先要理清楚几个基本概念和设置&#xff1a;锚点(anchor)、中心点(pivot)、位置(position)、UI缩放模式、父物件的transform设置 二 Anchor、Pivot与Position 2…

java:运用字节缓冲输入流将文件中的数据写到集合中

代码主要是将文本文件中的数据写到集合中&#xff0c;运用到的是java字节缓冲输入流的知识点。 public static void main(String[] args) throws IOException {//创建字符缓冲流输入对象BufferedReader bufferedReader new BufferedReader(new FileReader("student.txt&q…

Linux 忘记root密码,通过单用户模式修改

银河麒麟桌面操作系统 V10&#xff08;sp1&#xff09;”忘记用户密码&#xff0c;需要修改用户密码所写&#xff0c;可用于 X86 架构和 arm 架构。 2. 选择第一项&#xff0c;在上图界面按“e”键进行编辑修改。 3. 在以 linux 开头这行的行末&#xff0c;添加“init/bin/bas…

机遇与挑战并存 券商国际化战略布局关键要素

引言 在全球金融市场不断开放和技术快速进步的背景下&#xff0c;越来越多中资背景的券商开始寻求国际化发展。富途和老虎证券作为先行者&#xff0c;展示了中国券商在出海过程中的巨大潜力和成功经验。鉴于中资在海外设立券商的成功&#xff0c;不少公司也有意愿在海外设立券…

顺序结构 ( 六 ) —— 顺序结构实例 【互三互三】

&#x1f680;欢迎互三&#x1f449;&#xff1a;程序猿方梓燚 &#x1f48e;&#x1f48e;&#x1f680;所属专栏&#xff1a;C教程&#x1f48e; &#x1f680;关注博主&#xff0c;后期持续更新系列文章 &#x1f680;如果有错误感谢请大家批评指出&#xff0c;及时修改 &am…

51单片机:如何使用串口波特率计算器及其详解

目录 一、如何使用串口波特率计算器 1.以此为例: 2.生成代码如下: 3.需要手动配置中断系统 1.原理图 2.配置代码 二、如何理解软件生成的波特率 1.以该代码为例子进行分析 2.串口模式图 三、如何计算波特率 参考STC89C52手册P235 四、如何调用串口中断函数 一、如何…

数据分析理论

数据分析的概念 数据分析是指通过恰当的统计方法和分析手段&#xff0c;对数据进行收集汇总&#xff0c;并进行加工处理。对处理过后的有效数据进行分析&#xff0c;发现存在的问题&#xff0c;制定可行的方案、从而帮助人们采取更科学的行动 数据分析4个层次 著名咨询公司Gart…

55070-001J 同轴连接器

型号简介 55070-001J是Southwest Microwave的连接器。这款连接器外壳和中心接触件采用 BeCu 合金制成&#xff0c;这是一种具有良好导电性和机械性能的铜合金。绝缘珠则使用了 PEEK HT 材料制成&#xff0c;这是一种耐高温、耐化学腐蚀的工程塑料。为了确保连接的可靠性和稳定性…

腾讯HR的多维世界:从校招到文化塑造的全面探索

目录 Lyra&#xff1a;海外招聘的沟通桥梁 Moth&#xff1a;文化与活动的创意推手 Yaron&#xff1a;数据与分析的驱动者 腾讯HR的多元价值与成长路径 成就他人&#xff0c;实现自我 多元化团队的协同效应 长期主义与持续成长 企业文化与社会责任的践行者 结语&#x…

项目管理工具评测:2024年国内外最顶级的10款项目管理工具排行

国内外涌现出众多优秀的项目管理工具&#xff0c;它们各自在功能、易用性、集成能力等方面展现出独特优势。以下是国内外顶级的10款项目管理工具&#xff1a; 一、进度猫 推荐理由&#xff1a;进度猫以其直观的任务管理和进度跟踪功能&#xff0c;成为许多团队和项目的首选…

前一段时间比较火的刷网课平台源码,带数据库和教程

前一段时间比较火的刷网课平台源码&#xff0c;带数据库和教程。 好在疫情已经结束了&#xff0c;希望今后世上再无网课。 这个代码免费提供给大家学习开发用吧&#xff0c;作为一个php的入门学习案例用用还可以。 使用办法 网站根目录解压 打开nginx.htaccess文件&#x…

LeetCode—和为K的子数组(前缀和)

题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums …

api授权电商平台对接商品详情页数据指南

API授权电商平台对接商品详情页数据指南主要分析如何通过API接口获取电商平台上商品的详细信息&#xff0c;并指导如何将这些信息集成到应用程序中。接下来将详细探讨这个过程中的关键步骤和技术细节&#xff1a; API接口概述 功能和重要性&#xff1a;API&#xff08;应用程序…

【计算机网络】深入理解TCP协议的三次握手和四次挥手 一、前言

文章目录 前言一、说明2.1图解2.2 三次握手2.3 四次挥手 二、总结 前言 在计算机网络中&#xff0c;TCP协议是一种面向连接、可靠的、基于字节流的传输层通信协议。它的核心特性就是提供了数据的可靠传输&#xff0c;这种可靠性主要体现在连接的建立&#xff08;三次握手&…

Three.js动效(第02辑):炫酷的3D动画效果。

Hi&#xff0c;大家好&#xff0c;大宇数据从本期开始分享three.js的能够实现的动效&#xff0c;每期分享九幅图&#xff0c;这是第二期啦。 一起来看看吧。

智慧财税赋能:乐财业合伙人如何实现行业弯道超车

这是一个充满竞争的时代&#xff0c;财税服务行业也是如此&#xff1a;低端市场只剩下价格的厮杀&#xff0c;中高端市场则蕴藏着无限商机。 与传统代账公司相比&#xff0c;乐财业合伙人通过平台的赋能支持在服务质量、响应速度、客户体验等方面实现质的飞跃&#xff0c;从而…

【数据库】四、多类型数据库管理工具分享

一、简介 DBeaver是一款免费、开源的数据库管理工具&#xff0c;支持多种关系型数据库&#xff0c;如Access、SQLite、MySQL、PostgreSQL、Oracle等。提供图形界面&#xff0c;方便用户查看数据库结构、执行SQL查询和脚本等。支持跨平台操作&#xff0c;并具备丰富的插件和扩展…

【代码随想录】【算法训练营】【第64天】 [卡码117]软件构建 [卡码47]参加科学大会

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 64&#xff0c;周三&#xff0c;继续ding~ 题目详情 [卡码117] 软件构建 题目描述 卡码117 软件构建 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 [卡码…

如果我贷款买一套 400W 的房子,我要给银行多送几辆迈巴赫?

作者&#xff1a;一只野生的八哥 买房攻略 2023 年至今&#xff0c;上海房价一跌再跌。俺已经蠢蠢欲动了&#xff0c;磨刀霍霍向"买房"。但是奈何手里钞票不够&#xff0c;只能向天再借 500 年打工赚钱。但是作为倔强的互联网打工人&#xff0c;想知道自己会被银行割…