代码随想录刷题day31丨56. 合并区间,738.单调递增的数字,总结

news2024/12/26 23:40:02

代码随想录刷题day31丨56. 合并区间,738.单调递增的数字,总结

1.题目

1.1合并区间

  • 题目链接:56. 合并区间 - 力扣(LeetCode)

    在这里插入图片描述

  • 视频讲解:贪心算法,合并区间有细节!LeetCode:56.合并区间_哔哩哔哩_bilibili

  • 文档讲解:https://programmercarl.com/0056.%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.html

  • 解题思路:贪心

    • 判断区间重贴后要进行区间合并。
    • 先排序,让所有的相邻区间尽可能的重叠在一起,按左边界
    • 按照左边界从小到大排序之后,如果 intervals[i][0] <= intervals[i - 1][1] 即intervals[i]的左边界 <= intervals[i - 1]的右边界,则一定有重叠。(本题相邻区间也算重贴,所以是<=)
    • 知道如何判断重复之后,剩下的就是合并了,如何去模拟合并区间呢?
      • 其实就是用合并区间后左边界和右边界,作为一个新的区间,加入到result数组里就可以了。如果没有合并就把原区间加入到result数组。
  • 代码:

    //时间复杂度: O(nlogn)
    //空间复杂度: O(logn)
    class Solution {
        public int[][] merge(int[][] intervals) {
            //按照左边界排序
            Arrays.sort(intervals,(a,b) -> Integer.compare(a[0],b[0]));
            
            List<int[]> result = new LinkedList<>();
            // 第一个区间就可以放进结果集里,后面如果重叠,在result上直接合并
            result.add(intervals[0]);
            for(int i = 1;i < intervals.length;i++){
                if(intervals[i][0] <= result.getLast()[1]){
                    result.getLast()[1] = Math.max(intervals[i][1],result.getLast()[1]);
                }else{
                    result.add(intervals[i]);
                }
            }
            return result.toArray(new int[result.size()][]);
        }
    }
    
  • 总结:

    • 本质其实还是判断重叠区间问题。

1.2单调递增的数字

  • 题目链接:738. 单调递增的数字 - 力扣(LeetCode)

    在这里插入图片描述

  • 视频讲解:贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字_哔哩哔哩_bilibili

  • 文档讲解:https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html

  • 解题思路:贪心

    • 从后往前遍历
    • 一旦出现chars[i - 1] > chars[i]的情况(非单调递增),首先想让chars[i - 1]减一,chars[i]赋值9
  • 代码:

    class Solution {
        public int monotoneIncreasingDigits(int n) {
            String s = String.valueOf(n);
            char[] chars = s.toCharArray();
            // flag用来标记赋值9从哪里开始
            // 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行
            int flag = chars.length;
            for(int i = chars.length - 1;i > 0;i--){
                if(chars[i - 1] > chars[i]){
                    chars[i - 1]--;
                    flag = i;
                }
            }
            for(int i = flag;i < chars.length;i++){
                chars[i] = '9';
            }
            return Integer.parseInt(String.valueOf(chars));
        }
    }
    
  • 总结:

    • 最后代码实现的时候,也需要一些技巧,例如用一个flag来标记从哪里开始赋值9。

2.贪心总结

  • 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。

  • 贪心没套路,就刷题而言,如果感觉好像局部最优可以推出全局最优,然后想不到反例,那就试一试贪心吧!

  • for循环适合模拟从头到尾的遍历,而while循环适合模拟环形遍历

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

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

相关文章

源代码加密软件有哪些?2024常用的10款好用的企业源代码加密软件分享!

源代码作为企业的核心资产&#xff0c;一旦泄露&#xff0c;将可能导致技术被窃取、产品被复制&#xff0c;甚至引发法律纠纷。 一、企业源代码泄密的危害详情描述 企业源代码泄密事件频发&#xff0c;其危害不容小觑。 一方面&#xff0c;源代码的泄露可能导致企业的核心技术…

国内领先线上运动平台:如何借助AI技术实现业务腾飞与用户体验升级

“ 从智能训练到身体分析&#xff0c;再到辅助判决&#xff0c;AI技术正以惊人的速度渗透进体育和健身领域&#xff0c;为运动员和健身爱好者提供了前所未有的个性化体验。 ” AI&#xff0c;运动的智能伴侣 在巴黎奥运会上&#xff0c;AI技术的运用成为了焦点。它不仅为运动…

人脸关键点数据集WFLW

数据集&#xff1a;Look at Boundary: A Boundary-Aware Face Alignment Algorithm 论文&#xff1a;Look at Boundary: A Boundary-Aware Face Alignment Algorithm 发表&#xff1a;CVPR2018 1. 标注点位 官方说有98个点&#xff0c;但是配图只有0-95&#xff0c;咋回事&…

java设计模式(持续更新中)

1 设计模式介绍 设计模式代表了代码的最佳实践&#xff0c;被有经验的开发人员使用。设计模式是很多被反复使用并知晓的&#xff0c;主要是对代码和经验的总结。使用设计模式是为了重用代码&#xff0c;并让代码更容易被人理解&#xff0c;保证代码的可靠性。对接口编程而不是…

单考一个OCP认证?还是OCP和OCM认证都要考?

​ Oracle的OCP认证是数据库行业非常经典的一个认证&#xff0c;从事数据库行业的人都建考一个 Oracle OCP 认证。 OCP认证内容包括&#xff1a; OCA部分&#xff1a;数据库基础知识、SQL 语言使用、基本的数据库管理技能等&#xff0c;如数据库安装与配置、理解数据库架构、…

Web APIs - DOM节点操作

Web APIs - DOM节点操作 第9天 目标: 了解DOM节点的增删改查&#xff0c;掌握利用数据操作页面&#xff0c;完成移动端通讯录案例 日期对象节点操作M端事件JS插件综合案例 1、日期对象 日期对象&#xff1a;用来表示日期和时间的对象 作用&#xff1a;可以得到当前系统日期和…

力扣139-单词拆分(Java详细题解)

题目链接&#xff1a;139. 单词拆分 - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 最近刚学完背包&#xff0c;所以现在的题解都是以背包问题为基础再来写的。 如果大家不懂背包问题的话&#…

深度盘点:2024年企业最喜欢用的WMS仓库管理系统有哪些?

本文将列举国内外知名的仓库管理系统&#xff0c;从每个系统的适用范围、核心功能、特点来为大家解读。为企业选型提供参考&#xff01; WMS系统是Warehouse Management System&#xff08;仓库管理系统&#xff09;的简称&#xff0c;它是一个帮助企业和仓库管理者高效管理仓库…

NMOS与PMOS原理图

重点关注续流二极管方向和电流流向&#xff1a; NMOS应用&#xff1a; PMOS 应用&#xff1a;

BASM引领2024国家网络安全宣传周:智能守护,打造全方位业务与应用安全监测平台

在这个信息泛滥的时代&#xff0c;网络安全已不再是可有可无的选项。 随着技术的飞速发展&#xff0c;新型网络攻击层出不穷&#xff0c;数据泄露、恶意攻击频发&#xff0c;保护个人与企业的数字安全显得尤为重要。 2024年国家网络安全宣传周期间&#xff0c;通付盾给大家带…

Cortex-R52+的PE mode详解--Abort

目录 1.R52 AArch32通用寄存器描述 2.Abort模式是什么 3.实例详解 1.R52 AArch32通用寄存器描述 上篇文章我们阐述了关于R52异常如何定位&#xff0c;其中详细说明了发生异常后应该在什么模式下去观察寄存器。 今天就以Abort异常为例&#xff0c;详解下如何精准定位Abort异…

一文读懂网络安全等级保护

网络安全等级保护&#xff08;简称“等保”&#xff09;是我国为了保护信息安全而推出的一项制度&#xff0c;旨在通过对信息系统分等级实施安全保护&#xff0c;确保信息安全。它涵盖了信息和存储、传输、处理这些信息的信息系统&#xff0c;以及使用的信息安全产品。等级保护…

素数筛的一个易错点

前言&#xff1a;之前运用素数筛的时候都没注意&#xff0c;一个不是素数的数可能会被反复标记为1 题目地址 #include <bits/stdc.h> using namespace std; #define int long longconst int N (int)3e7 10; int a[N]; int n;signed main() {// 1// 2 2 // 3 3// 4 2cin…

从100G到400G:利用多模光纤升级数据中心网络

数据中心网络的持续发展 数据中心网络的持续发展涵盖了两个关键方面。首先&#xff0c;必须应对由机器学习和物联网等数据密集型应用所带来的带宽和流量需求的增长挑战&#xff0c;这些应用正在推动现有10G和40G链路的升级&#xff1b;其次&#xff0c;为了满足日益提升的可持…

ARP:IP到MAC地址转换

网络中的ARP协议&#xff0c;它是IP地址到MAC地址转换的关键。通过ARP请求&#xff08;Req&#xff09;和响应&#xff08;Rsp&#xff09;&#xff0c;设备能够找到对应IP的物理地址&#xff0c;从而实现网络通信。 ARP req&#xff1a;广播 主机1mac:02:c2:c2:52:e5:e1 主机…

使用 Elastic 和 LM Studio 的 Herding Llama 3.1

作者&#xff1a;来自 Elastic Charles Davison, Julian Khalifa 最新的 LM Studio 0.3 更新使 Elastic 的安全 AI Assistant 能够更轻松、更快速地与 LM Studio 托管模型一起运行。在这篇博客中&#xff0c;Elastic 和 LM Studio 团队将向你展示如何在几分钟内开始使用。如果你…

顺风车 萝卜快跑!做人,什么是格局,什么是境界?——早读(逆天打工人爬取热门微信文章解读)

萝卜快跑&#xff01; 引言Python 代码第一篇 洞见 做人&#xff0c;什么是格局&#xff0c;什么是境界&#xff1f;第二篇 股市风云结尾 &#xff08;哈哈 订单已取消&#xff09; 引言 今天难受 把昨天买的票加入黑名单 太差了 早上一来低开4个多点 把我昨天的利润全没了 然…

微生物分类检测系统源码分享

微生物分类检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

代理服务器及其原理

代理服务器的代理可以分为正向代理和反向代理&#xff0c;本篇将讲解这两种代理方式的原理&#xff0c;以及对应的功能特点和应用场景。最后还对比和 NAT 和代理服务器的区别。 目录 正向代理 工作原理 功能特点 应用场景 反向代理 基本原理 应用场景 NAT和代理服务器…

mybatis-plu分页出现问题

还真能遇到版本导致的问题&#xff1a; mybatis-plus.使用分页插件出现count(),缺少* 查看你mybtis-plus的版本&#xff0c;将3.4.2换掉