代码随想录算法训练营29期|day36任务以及具体安排

第八章 贪心算法 part05

  •  435. 无重叠区间 
    class Solution {
        public int eraseOverlapIntervals(int[][] intervals) {
            Arrays.sort(intervals, (a,b)-> {
                return Integer.compare(a[0],b[0]);
            });
            if(intervals.length == 1) return 0;
            int result = 0;
            for(int i = 1 ; i < intervals.length ; i++){
                if(intervals[i-1][1] > intervals[i][0]){
                    result++;
                    intervals[i][1] = Math.min(intervals[i][1], intervals[i-1][1]);
                }
            }
            return result;
        }
    }

    思路:和上题射气球思路一样,都是要寻找重合区间,如果有重合区间就result++,并且更新右边界。

  •  763.划分字母区间 
    class Solution {
        public List<Integer> partitionLabels(String S) {
            List<Integer> list = new LinkedList<>();
            int[] edge = new int[26];
            char[] chars = S.toCharArray();
            for (int i = 0; i < chars.length; i++) {
                edge[chars[i] - 'a'] = i;
            }
            int idx = 0;
            int last = -1;
            for (int i = 0; i < chars.length; i++) {
                idx = Math.max(idx,edge[chars[i] - 'a']);
                if (i == idx) {
                    list.add(i - last);
                    last = i;
                }
            }
            return list;
        }
    }
    

    思路:寻找一个区间内的最大距离,使得每个区间内的字母都跑不出这个区间,这就是一个结果集,用edge数组保存各个字母的最远距离,一旦i遍历到idx区间内的最远距离时,就把这个区间长度加入结果集list中。

  •  56. 合并区间 
    class Solution {
        public int[][] merge(int[][] intervals) {
            Arrays.sort(intervals, (a,b) -> Integer.compare(a[0], b[0]));
            List<int[]>result = new ArrayList<>();
            int i ;
            for(i = 1 ; i < intervals.length ; i++){
                if(intervals[i-1][1] >= intervals[i][0]){
                    intervals[i][0] = intervals[i-1][0];
                    intervals[i][1] = Math.max(intervals[i-1][1], intervals[i][1]);
                }else{
                    result.add(intervals[i-1]);
                }
            }
            result.add(intervals[i-1]);
            return result.toArray(new int[result.size()][]);
        }
    }
    /**
    时间复杂度 : O(NlogN) 排序需要O(NlogN)
    空间复杂度 : O(logN)  java 的内置排序是快速排序 需要 O(logN)空间
    
    */
    class Solution {
        public int[][] merge(int[][] intervals) {
            List<int[]> res = new LinkedList<>();
            //按照左边界排序
            Arrays.sort(intervals, (x, y) -> Integer.compare(x[0], y[0]));
            //initial start 是最小左边界
            int start = intervals[0][0];
            int rightmostRightBound = intervals[0][1];
            for (int i = 1; i < intervals.length; i++) {
                //如果左边界大于最大右边界
                if (intervals[i][0] > rightmostRightBound) {
                    //加入区间 并且更新start
                    res.add(new int[]{start, rightmostRightBound});
                    start = intervals[i][0];
                    rightmostRightBound = intervals[i][1];
                } else {
                    //更新最大右边界
                    rightmostRightBound = Math.max(rightmostRightBound, intervals[i][1]);
                }
            }
            res.add(new int[]{start, rightmostRightBound});
            return res.toArray(new int[res.size()][]);
        }
    }

    思路:与前几道题类似,都是要求重合区间,然后合并起来,注意!!要取右边界的最大值!!不要忘记比较。

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

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

相关文章

结构体与共用体——共用体——C语言——day16

昨天介绍了下结构体&#xff0c;今天主要介绍共用体&#xff0c;枚举 共用体 概念&#xff1a;有时需要使几种不同类型的变量存放到同一段内存单元中。 例如&#xff0c;可把一个整型变量、一个字符型变量、一个浮点型变量放在同一个地址开始的内存单元中 。以上三个变量在内…

Python系列-字典

&#x1f308;个人主页: 会编程的果子君 ​&#x1f4ab;个人格言:“成为自己未来的主人~” ​ 目录 ​ 字典是什么 创建字典 查找key 新增/修改元素 删除元素 遍历字典元素 取出所有的key和value 合成的key类型 ​编辑 小结 字典是什么 字典是一种存储键值对的结…

云打印怎么收费?云打印需要付费吗?

随着云打印概念的火热发展&#xff0c;很多有打印需求的App或者个人用户都想使用易绘创云打印服务。那么易绘创云打印怎么收费&#xff1f;云打印需要付费吗&#xff1f;今天就带大家来了解一下。 云打印怎么收费&#xff1f;云打印需要付费吗&#xff1f; 很多有打印需求的小…

Linux网络状态查看与防火墙管理

网络状态查看 netstat [选项] Netstat是一款命令行工具&#xff0c;用于显示Linux系统中网络的状态信息&#xff0c;可以显示网络连接、路由表、连接的数据统计等信息。 使用 选项 -a&#xff1a;显示所有选项&#xff0c;包括监听和未监听的端口。 -t&#xff1a;仅显示tc…

IS-IS的LSP分片扩展

原理 IS-IS通过泛洪LSP来宣告链路状态信息,由于一个LSP能够承载的信息量有限,IS-IS将对LSP进行分片。每个LSP分片由产生该LSP的结点或伪结点的SystemID、PseudnodeID(普通LSP中该值为0,Pseudonode LSP中该值为非0)、LSPNumber(LSP分片号)组合起来唯一标识,由于LSPNumb…

微信小程序(二十四)简易的双向绑定

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.双向绑定实例 2.双向绑定的局限性 源码&#xff1a; index.wxml <!-- 1.placeholder:输入框为空时的占位提示语2.model:value 双向绑定&#xff08;其实就是在原先基础上加上了model:&#xff09; 3.目前双…

小白水平理解面试经典题目LeetCode 118 Pascal‘s Triangle【Java实现】

LeetCode 118 生成杨辉三角&#xff08;Pascal’s Triangle&#xff09; 小白渣翻译 给定一个非负整数 numRows&#xff0c;生成杨辉三角的前 numRows 行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 例子 这里是小白理解 那么这种题目一上来看&#xf…

C++进阶(九)哈希概念哈希函数哈希冲突

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、哈希概念1、哈希介绍2、哈希与哈希表 二、哈希冲突三、哈希函数四、 哈希冲突解决 一、哈…

ElementUI Form:Checkbox 多选框

ElementUI安装与使用指南 Checkbox 多选框 点击下载learnelementuispringboot项目源码 效果图 el-checkbox.vue &#xff08;Checkbox 多选框&#xff09;页面效果图 项目里el-checkbox.vue代码 <script> const cityOptions [上海, 北京, 广州, 深圳] export def…

react 之 UseMemo

useMemo 看个场景 下面我们的本来的用意是想基于count的变化计算斐波那契数列之和&#xff0c;但是当我们修改num状态的时候&#xff0c;斐波那契求和函数也会被执行&#xff0c;显然是一种浪费 // useMemo // 作用&#xff1a;在组件渲染时缓存计算的结果import { useState …

【C++干货铺】哈希结构在C++中的应用

目录 unordered系列关联式容器 unordered_map unordered_map的接口说明 1.unordered_map的构造 2. unordered_map的容量 3. unordered_map的迭代器 4. unordered_map的元素访问 5. unordered_map的查询 6. unordered_map的修改操作 7. unordered_map的桶操作 底层结构 …

Nijijourney V6版本动漫图像生成模型发布

简介 这是一个最先进的AI&#xff0c;可以绘制任何二次元风格的绘画&#xff01;这是一个由 Spellbrush 与 Midjourney 所共同设计开发的魔法般工具。无论您是在寻找可爱的Q版角色还是充满动感的动作场景&#xff0c;niji・journey 都能将您的想象变为现实。 功能介绍 - 增强…

深度解析:i++ 与 ++i,探究其性能差异与使用技巧

在编程世界中&#xff0c;经常会遇到对变量进行递增操作&#xff0c;而i和i这两个递增操作符就是我们常用的两种方式。这两者看似简单&#xff0c;但却有着微妙的性能区别和使用差异。 1. 性能差异的探究 首先&#xff0c;我们来研究i和i在性能上的微妙差异。这对于编写高效的…

搭建 idea 插件仓库私服

正常情况下&#xff0c;我们开发的 idea 插件会发布到 idea 官方商城中&#xff0c;这样用户就可以在 idea 的 Marketplace 中搜索安装。 但是在企业内部&#xff0c;有可能我们开发了很多内部插件&#xff0c;而不能发布到公共市场中&#xff0c;这种情况下我们就需要搭建一个…

子查询练习1

数据表 链接&#xff1a;https://pan.baidu.com/s/1dPitBSxLznogqsbfwmih2Q 提取码&#xff1a;b0rp --来自百度网盘超级会员V5的分享 子查询举例 子查询的分类 单行子查询 > > < < ! <> 单行子查询 WHERE中的子查询 查询工资大于149号…

智源成立5年,高层大变动!黄铁军不再担任院长,张宏江、唐杰、刘江均已离任

大家好&#xff0c;我是二狗。 就在刚刚&#xff0c;北京智源人工智能研究院官方微信公众号宣布&#xff1a;王仲远博士加入智源研究院&#xff0c;接任院长一职&#xff0c;全面负责研究院各项工作&#xff0c;黄铁军不再兼任智源研究院院长。 智源表示&#xff0c;黄铁军于2…

Dubbo之架构源码公共知识

1.ScopeModel 抽象这三个能力是为了实现 Dubbo 的多实例支持&#xff0c;FrameworkModel 是实现类似 JVM 租户级别的隔离&#xff0c;ApplicationModel 是为了实现一个机器上发布多个应用&#xff08;如 demo-application1 和 demo-application2 一起发布&#xff09;&#xff…

11. UE5 RPG使用GameplayEffect修改角色属性(二)

上一篇写了一下GameplayEffect的基础操作&#xff0c;这一篇进阶一下&#xff0c;讲解一下GameplayEffect堆叠功能&#xff0c;以及能够基于这个堆叠能够实现一些怎样的效果。 经过几天的查看&#xff0c;发现新版的更新的真不错&#xff0c;而且最上面竟然直接显示编译的错误…

速过计算机二级python——第一讲:入门python

速过计算机二级python 第一讲&#xff1a;入门python1.安装Python1.下载2.安装3.运行4.代码 2.安装VS code 第一讲&#xff1a;入门python 本讲任务&#xff1a; 安装python安装VS code Python初学者通常首次面临的主要问题是需要在计算机上安装Python和一个适用的代码编辑器…

【ADI 知识库】X 波段相控阵开发平台用户指南1

原文链接&#xff1a;https://wiki.analog.com/resources/eval/user-guides/x-band-platform 产品详情 X波段开发平台包含一个AD9081-FMCA-EBZ AD9081 MxFE评估板、一个ADXUD1AEBZ X/C波段上/下变频器和一个ADAR1000EVAL1Z X/Ku波段模拟波束成形板。目标应用是相控阵雷达、电…