day36 贪心算法part5

435. 无重叠区间

中等
给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。

气球问题稍加改动就可ac

在这里插入图片描述

一个交叉区间里,最终只能保留一个,其他的全部要去掉。所以要移除的区间最小数量就是总数减去交叉区间数。

在这里插入图片描述
在这里插入图片描述

// 左边界排序直接求要移走的区间个数
class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));

        int count = 0; // 注意是0,因为是求重叠区间数
        for (int i = 1; i < intervals.length; i++) {
            if (intervals[i][0] < intervals[i - 1][1]) { // 有重叠,第二个的左边界小于第一个的右边界
                intervals[i][1] = Math.min(intervals[i][1], intervals[i - 1][1]);
                count++; // 有重叠就得挪走一个
            } else { // 无重叠
                // 无重叠不用处理,这里的else可以删掉
            }
        }
        return count;
    }
}

763. 划分字母区间

中等
提示
给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。
注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。
返回一个表示每个字符串片段的长度的列表。

class Solution {
    public List<Integer> partitionLabels(String s) {
        List<Integer> result = new LinkedList<>();
        int hash[] = new int[26];
        char[] chars = s.toCharArray(); // 记住这个函数,挺有用的

        // 得到对应的哈希表(我称之为哈希表)
        for (int i = 0; i < chars.length; i++) {
            hash[chars[i] - 'a'] = i; 
        }
        int max = 0; // 记录在以前出现过的最大的字母的下标
        int last = 0; // 题目划分字符段是用个数确定的,所以得记住上次划分的边缘
        for (int i = 0; i < chars.length; i++) {
            max = Math.max(max, hash[chars[i] - 'a']); // 看看当前字母下标和以前记录的max谁更大
            if (max == i) {
                result.add(i + 1 - last);
                last = i + 1;
            }
        }
        return result;
    }
}

56. 合并区间

中等
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

难点:找到重叠并不难,难在如何模拟合并。这个题想明白了也很简单,找到不重叠的区间就直接加到结果里,如果找到重叠的区间就记录这个重叠区间的左边界和右边界,把它当做一个区间来继续和下一个进行比较。

class Solution {
    public int[][] merge(int[][] intervals) {
        // 按左边界进行排序
        Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
        int leftBound = intervals[0][0]; // 左边界
        int rightBound = intervals[0][1]; // 最大右边界
        List <int[]> result = new LinkedList<>();

        for (int i = 1; i < intervals.length; i++) {
            if (rightBound < intervals[i][0]) { // 不重叠, 本题 = 也是重叠
                // 不重叠就加到结果里
                result.add(new int[] {leftBound, rightBound});
                // 更新左右边界
                leftBound = intervals[i][0];
                rightBound = intervals[i][1];
            } else { // 重叠
                // 左边界不用更新,已经是最左边了
                // 更新右边界
                rightBound = Math.max(rightBound, intervals[i][1]);
            }
        }
        // 注意这个!把最后一组加进去
        result.add(new int[]{leftBound, rightBound});
        return result.toArray(new int[result.size()][]); // 记住这个语法!!!
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软考66-上午题-【面向对象技术】-小结+杂题

一、杂题 真题1&#xff1a; 真题2&#xff1a; 真题4&#xff1a; 真题5&#xff1a; 真题6&#xff1a; 二、面向对象设计-总结 2-1、考题分析 选择题&#xff1a;11道&#xff08;11分&#xff09; 综合分析题&#xff1a;2道&#xff08;30分&#xff09; java程序设计…

Common Sense Machines(CSM):立志成为图像生成适用于游戏引擎的3D资产AI产品

详细说明 Common Sense Machines&#xff08;CMS&#xff09;&#xff1a;立志成为图像生成适用于游戏引擎的3D资产AI产品-喜好儿aigc详细说明&#xff1a;https://heehel.com/CSM-3d 官方网站&#xff1a;https://www.csm.ai/ 使用体验网址&#xff1a;https://3d.csm.ai/ 来…

Rust错误处理和Result枚举类异常错误传递

Rust 有一套独特的处理异常情况的机制&#xff0c;它并不像其它语言中的 try 机制那样简单。 首先&#xff0c;程序中一般会出现两种错误&#xff1a;可恢复错误和不可恢复错误。 可恢复错误的典型案例是文件访问错误&#xff0c;如果访问一个文件失败&#xff0c;有可能是因…

微信小程序用户登陆和获取用户信息功能实现

官方文档&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 接口说明&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html 我们看官方这个图&#xff0c;梳理一下用户…

【Python爬虫实战】抓取省市级城市常务会议内容

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

Three.js--》探寻Cannon.js构建震撼的3D物理交互体验(二)

我们用three.js可以绘制出各种酷炫的画面&#xff0c;但是当我们想要一个更加真实的物理效果的话&#xff0c;这个时候我们就需要一个物理的库&#xff0c;接下来我们就讲解一下今天要学习的canon&#xff0c;它可以给我们提供一个更加真实的物理效果&#xff0c;像物体的张力、…

Python - Pycharm 配置 autopep8 并设置快捷键

什么是 PEP8 官方&#xff1a;PEP 8 – Style Guide for Python Code | peps.python.org PEP8 是 Python 官方推出的一套编码的规范&#xff0c;只要代码不符合它的规范&#xff0c;就会有相应的提示&#xff0c;还可以让代码自动的格式化 Pycharm 自带的代码格式化 ​ 但这…

【C++】String常用的函数总结

目录 一、string的构造函数方式&#xff1a; 二、常用的大小/容量相关操作&#xff1a; 三、string的常用修改操作&#xff1a; 四、string的遍历&#xff1a; 五、string的任意位置插入 / 删除&#xff1a; 六&#xff1a;补充&#xff1a; 一、string的构造函数方式&a…

JavaWeb环境配置 IDE2022版

一、新建一个javaweb文件 文件名可以自己随意改 二、给建立的项目添加框架支持 勾选Web Application,点击确定 建立成功界面&#xff0c;会生成一个新的web文件夹 三、配置tomcat 1、两种打开配置文件方式&#xff1a; 第一种 第二种 2、打开后&#xff0c;点击号&#xf…

LLM | Gemma的初体验

一起来体验一下吧~ google/gemma-7b-it Hugging Face 此型号卡对应于 Gemma 型号的 7B 指令版本。还可以选择 2B 基本模型、7B 基本模型和 2B 指导模型的模型卡。 微调 使用 QLoRA 对 UltraChat 数据集执行监督微调 &#xff08;SFT&#xff09; 的脚本在 TPU 设备上使用 FS…

鸿蒙Harmony应用开发—ArkTS声明式开发(手势处理:绑定手势方法)

为组件绑定不同类型的手势事件&#xff0c;并设置事件的响应方法。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 绑定手势识别 通过如下属性给组件绑定手势识别&#xff0c;手势识别成功后可以通过事…

LVS负载均衡集群基础概念

目录 一、集群 1、集群概述 1.1 什么是集群 1.2 集群系统扩展方式 1.2.1 Scale UP&#xff08;纵向扩展&#xff09; 1.2.2 Scale OUT&#xff08;横向扩展&#xff09; 1.2.3 区别 1.3 分布式系统 1.4 分布式与集群 1.5 集群设计原则 1.6 集群设计实现 1.6.1 基础…

手回科技:人生的“小雨伞”,能否撑起自己的增长路?

有道是一年之计在于春。新年伊始&#xff0c;多家券商发布研报表达了对2024年保险市场表现的观点。 比如&#xff0c;开源证券表示&#xff0c;政策组合拳带来beta催化&#xff0c;保险业务端和弹性占优&#xff1b;中国银行证券指出&#xff0c;2024年&#xff0c;保险行业景…

Leetcode 第 125 场双周赛题解

Leetcode 第 125 场双周赛题解 Leetcode 第 125 场双周赛题解题目1&#xff1a;3065. 超过阈值的最少操作数 I思路代码复杂度分析 题目2&#xff1a;3066. 超过阈值的最少操作数 II思路代码复杂度分析 题目3&#xff1a;3067. 在带权树网络中统计可连接服务器对数目思路代码复杂…

Marin说PCB之POC电路layout设计仿真案例---01

最近娃哈哈饮料突然爆火&#xff0c;看新闻后才知道春晚的的时候宗老已经病的很严重了&#xff0c;现在也已经离我们而去了&#xff0c;宗老是一个值得我们尊敬爱戴的伟大企业家。于是乎小编我立马去他们的直播间买了一箱娃哈哈AD钙奶支持一下我们的国货。 中午午休的时候&…

智慧城市的未来:利用数字孪生技术推动智慧城市的智能化升级

目录 一、引言 二、数字孪生技术概述 三、数字孪生技术在智慧城市中的应用 1、城市规划与建设 2、城市管理与运营 3、公共服务与民生改善 4、应急管理与灾害防控 四、数字孪生技术推动智慧城市的智能化升级的价值 1、提高城市管理的智能化水平 2、优化城市资源配置 …

python将conda环境打入docker环境中

1.假设你本地已经安装好了conda相关的 ubuntu安装python以及conda-CSDN博客 并且已经创建启动过相关的环境&#xff0c;并且install了相关的包。 我本地的conda环境叫做,gptsovits_conda3 2.下载conda打包工具 conda install conda-pack pip install conda-pack 3.打包 con…

java八股文复习-----2024/03/04----基础

相关资源 大彬八股文 2024八股文 2024秋招八股文 1.了解Java的包装类型吗&#xff1f;为什么需要包装类&#xff1f; Java 是一种面向对象语言&#xff0c;很多地方都需要使用对象而不是基本数据类型。比如&#xff0c;在集合类中&#xff0c;我们是无法将 int 、double 等类型…

lvs集群介绍

目录 一、LVS集群基本介绍 1、什么是集群 2、集群的类型 2.1 负载均衡群集&#xff08;Load Balance Cluster) 2.2 高可用群集(High Availiablity Cluster) 2.3 高性能运算群集(High Performance Computing Cluster) 3、负载均衡集群的结构 ​编辑 4、LVS集群类型中的…

苹果电脑安装Android Studio和配置SDK

大家好&#xff0c;我是你们的好朋友咕噜铁蛋&#xff01;今天&#xff0c;我们要来聊一聊关于《苹果电脑安装Android Studio和配置SDK》这个话题。对于使用苹果电脑的开发者来说&#xff0c;安装Android Studio并配置SDK可能会有些不同&#xff0c;但只要跟着我的指引&#xf…