代码随想录算法训练营第35天|435. 无重叠区间|763.划分字母区间|56. 合并区间

代码随想录算法训练营第35天|435. 无重叠区间|763.划分字母区间|56. 合并区间

详细布置

今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。 都属于那种看起来好复杂,但一看贪心解法,惊呼:这么巧妙!
还是属于那种,做过了也就会了,没做过就很难想出来。
不过大家把如下三题做了之后, 重叠区间 基本上差不多了

435. 无重叠区间

https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.html

class Solution {//跟最小射箭数思想差不多
public:// 需要移除区间的最小数量static bool cmp(const vector<int>& a,const vector<int>& b){return a[1]<b[1];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {if(intervals.size()==0) return 0;sort(intervals.begin(),intervals.end(),cmp);int result=1;int end=intervals[0][1];for(int i=1;i<intervals.size();i++)if(end<=intervals[i][0]){end=intervals[i][1];result++;}return intervals.size()-result;}};

763.划分字母区间

https://programmercarl.com/0763.%E5%88%92%E5%88%86%E5%AD%97%E6%AF%8D%E5%8C%BA%E9%97%B4.html

class Solution {
public:vector<int> partitionLabels(string s) {int hash[27]={0};// i为字符,hash[i]为字符出现的最后位置for(int i=0;i<s.size();i++)// 统计每一个字符最后出现的位置hash[s[i]-'a']=i;//这边铸币搞了个+=结果铸币到自己做不出来   vector<int> result;int left=0;int right=0;for(int i=0;i<s.size();i++){right=max(right,hash[s[i]-'a']);// 找到字符出现的最远边界if(i==right){result.push_back(right-left+1);left=i+1;}}return result;}
};

56. 合并区间
本题相对来说就比较难了。(需要重新看看***)

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

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;}
};

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

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

相关文章

【R语言实战】——Logistic回归模型

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

如何锁定鼠标光标在水平、垂直或45度对角线模式下移动 - 鼠标水平垂直移动锁定器简易教程

在我们进行精细工作例如如创建图标和图形设计时&#xff0c;通常需要我们对鼠标移动进行精确控制。一旦向左或向右轻微移动&#xff0c;都可能导致设计出错。若出现不必要的错误&#xff0c;我们极有可能不得不重新开始&#xff0c;这会令人感到非常沮丧。这种情况下&#xff0…

SAP ERP实施有几个阶段?工博科技带来SAP系统实施项目全流程介绍

根据SAP实施方法论&#xff0c;SAP系统实施流程一共分为五个主要项目阶段&#xff1a;项目准备、蓝图设计、系统实现、上线准备、上线后支持。在项目启动前&#xff0c;双方必须对项目实施过程中各阶段所涉及的任务与交付件以及项目完成标志达成共识&#xff0c;各阶段项目交付…

微信小程序 python+django口腔牙科问诊系统 springboot设计与实现_1171u

口腔助手”小程序主要有管理员&#xff0c;医生和用户三个功能模块。以下将对这三个功能的作用进行详细的剖析。 本文通过采用B/S架构&#xff0c;uniapp框架、MySQL数据库&#xff0c;结合国内“口腔助手”管理现状&#xff0c;开发了一个基于微信小程序的“口腔助手”小程序。…

《备忘录模式(极简c++)》

本文章属于专栏- 概述 - 《设计模式&#xff08;极简c版&#xff09;》-CSDN博客 模式说明&#xff1a; 方案&#xff1a;备忘录模式用于捕获对象的内部状态&#xff0c;并在需要时将对象恢复到先前的状态。它包括三个关键角色&#xff1a;发起者&#xff08;Originator&#…

MATLAB实现在LSB低三位嵌入图像

实现方法 改进的图像LSB加密算法:Matrix encoding embedding MATLAB实现代码 clc clearvars; close all;% 读取秘密图像 A = imread(lena256.bmp); % A = randi([0, 255], 128, 128, uint8); B=one_to_four(A); figure

鸿蒙系统和安卓系统之间存在几个主要区别

鸿蒙系统和安卓系统之间存在几个主要区别&#xff1a; 背景和起源&#xff1a;安卓系统起源于Linux&#xff0c;由谷歌主导开发&#xff0c;并广泛应用于智能手机和平板电脑等设备。鸿蒙系统则是华为自主研发的操作系统&#xff0c;其初衷是为了迎接全场景体验时代的到来&…

TCP客户端及服务器端开发实践

一、TCP客户端及服务器端开发实践 1、TCP网络应用程序开发分类 ① TCP客户端应用程序开发 ② TCP服务器端应用程序开发 客户端程序是指运行在用户设备上的程序&#xff0c;服务端程序是指运行在服务器设备上的程序&#xff0c;专门为客户端提供数据服务。那如何记忆呢&…

软考--软件设计师(软件工程总结1)

目录 1.定义 2.软件生存周期 3.软件过程&#xff08;即软件开发中遵循的一系列可预测的步骤&#xff09; ​编辑4.软件开发模型 5.需求分析&#xff08;软件需求分析&#xff0c;系统需求分析或需求分析工程&#xff09; 6. 需求工程 7.系统设计 8.系统测试 1.定义 软件…

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

题目&#xff1a;有一个已经排好序的数组。现输入一个数&#xff0c;要求按原来的规律将它插入数组中。 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel g…

【开发环境】Mac 安装 Visual Studio Code ( VSCode 简介 | 下载 VSCode | 安装 VSCode | 安装中文语言包 )

文章目录 一、Visual Studio Code 简介二、MAC 安装 Visual Studio Code1、下载 Visual Studio Code2、安装 Visual Studio Code3、安装中文语言包4、编辑 html 并运行 一、Visual Studio Code 简介 Visual Studio Code 简称 VSCode , 是 微软 开发的一款 轻量级 / 跨平台 的代…

SQL Server的详细使用教程

安装SQL Server 下载SQL Server 安装程序运行安装程序,选择"基本"安装类型在"实例配置"页面,将实例命名为"SQLServerTest"在"服务器配置"页面,选择"NT服务\系统"作为启动账户完成其他设置,然后安装SQL Server 连接SQL Serve…

腾讯云服务器4核8g配置好不好?用它干啥使?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

【Pt】马灯贴图绘制过程 05-铁丝与渲染出图

目录 效果 步骤 一、基本材质 二、浮尘 三、渲染 效果 步骤 一、基本材质 CtrlAlt鼠标右键选中指定的纹理集 在智能材质中将“Iron Forged Old”加入图层 将智能材质“Iron Forged Old”文件夹打开&#xff0c;将图层“Base”和“Edge”的基本颜色改暗一点 二、浮尘 新…

746.Leetcode 使用最小花费爬楼梯

746.Leetcode 使用最小花费爬楼梯 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯…

BUUCTF-MD5

BUUCTF-MD5 1 注意&#xff1a;得到的 flag 请包上 flag{} 提交 27120bd8-e273-4528-97a9-28dcebe236de.zip flag{admin1} e00cf25ad42683b3df678c61f42c6bdahttps://www.cmd5.com/

idea常用配置——注释快捷键

1、单行注释&#xff1a;使用 Ctrl / 可以添加或删除当前行的注释。如果你想要给某一行添加注释&#xff0c;只需要将光标放在那一行&#xff0c;然后按下 Ctrl / 即可。如果你想要删除那一行的注释&#xff0c;同样只需要将光标放在那一行&#xff0c;然后再次按下 Ctrl /。…

【WPF应用33】WPF基本控件-TabControl的详解与示例

在Windows Presentation Foundation&#xff08;WPF&#xff09;中&#xff0c;TabControl控件是一个强大的界面元素&#xff0c;它允许用户在多个标签页之间切换&#xff0c;每个标签页都可以显示不同的内容。这种控件在组织信息、提供选项卡式界面等方面非常有用。在本篇博客…

探索STM32串口通讯:打开硬件通道的魔法之门

前言 在嵌入式系统中&#xff0c;串口通讯一直扮演着至关重要的角色。STM32微控制器系列内置了&#xfffd;&#xfffd;&#xfffd;个串口&#xff08;USART&#xff09;模块&#xff0c;能够支持多种串口通讯协议&#xff0c;如UART、SPI和I2C等。本文将深入探讨STM32串口通…

pycharm和Spyder多行注释快捷键

1.选取注释内容 2.pycharm&#xff1a;使用Ctrl/ 3.Spyder&#xff1a;使用Ctrl1 效果图