LeetCode之区间

ops/2025/1/13 7:51:49/

228. 汇总区间

class Solution {public List<String> summaryRanges(int[] nums) {// 输入:nums = [0,1,2,4,5,7] 输出:["0->2","4->5","7"]// 创建一个字符串列表,用于存储结果List<String> result = new ArrayList<>();// 初始化索引iint i = 0;// 当索引i小于数组长度时,继续循环while (i < nums.length) {// 记录当前范围的起始索引int low = i;// 移动到下一个索引i++;// 检查是否还在连续范围内,nums[i]是否等于前一个数加1while (i < nums.length && nums[i] == nums[i - 1] + 1) {// 如果是连续的,移动到下一个索引i++;}// 记录当前范围的结束索引int high = i - 1;// 创建一个字符串缓冲区,存储起始数 StringBuilder sb = new StringBuilder(Integer.toString(nums[low]));// 如果起始索引低于结束索引,说明是一个范围if (low < high) {// 添加范围符号sb.append("->");// 添加结束数sb.append(Integer.toString(nums[high]));}// 将生成的范围或单个数添加到结果列表中result.add(sb.toString());}// 返回结果列表return result;}}

56. 合并区间

class Solution {public int[][] merge(int[][] intervals) {// 按照区间的左边界进行升序排序Arrays.sort(intervals, (a, b) -> {return a[0] - b[0];});// 创建一个列表用于存储合并后的区间List<int[]> merge = new ArrayList<>();// 遍历排序后的区间数组for (int i = 0; i < intervals.length; i++) {// 获取当前区间的左边界int left = intervals[i][0];// 获取当前区间的右边界int right = intervals[i][1];// 如果合并列表为空或者当前区间的左边界大于合并列表中最后一个区间的右边界// 说明当前区间与之前的区间不重叠,可以直接添加到合并列表中if (merge.size() == 0 || merge.get(merge.size() - 1)[1] < left) {merge.add(new int[]{left, right});} else {// 如果当前区间与合并列表中最后一个区间有重叠// 则更新合并列表中最后一个区间的右边界为当前区间和合并列表中最后一个区间右边界的较大值merge.get(merge.size() - 1)[1] = Math.max(right, merge.get(merge.size() - 1)[1]);}}return merge.toArray(new int[merge.size()][1]);}
}

57. 插入区间

class Solution {public int[][] insert(int[][] intervals, int[] newInterval) {// 新插入区间的左边界int left = newInterval[0];// 新插入区间的右边界int right = newInterval[1];// 创建一个列表用于存储最终结果List<int[]> ansList = new ArrayList<>();// 标记新区间是否已被放置boolean placed = false;// 遍历给定的区间列表for (int[] interval : intervals) {// 如果当前区间在新插入区间的右侧且无交集if (interval[0] > right) {// 如果新区间还未被放置,将新区间加入结果列表if (!placed) {ansList.add(new int[]{left, right});placed = true;}// 将当前区间加入结果列表ansList.add(interval);} else if (interval[1] < left) {// 如果当前区间在新插入区间的左侧且无交集,直接将当前区间加入结果列表ansList.add(interval);} else {// 如果当前区间与新插入区间有交集,计算它们的并集left = Math.min(interval[0], left);right = Math.max(interval[1], right);}}// 如果遍历完所有区间后新区间仍未被放置,将新区间加入结果列表if (!placed) {ansList.add(new int[]{left, right});}// 将列表转换为二维数组作为最终结果int[][] result = new int[ansList.size()][2];for (int i = 0; i < ansList.size(); i++) {result[i] = ansList.get(i);}return result;}
}

452. 用最少数量的箭引爆气球

class Solution {public int findMinArrowShots(int[][] points) {// 对二维数组 points 按照每个区间的右边界进行升序排序Arrays.sort(points, (a, b) -> Integer.compare(a[1], b[1]));// 初始化第一个区间的右边界为 pre,初始最小箭的数量为 1int pre = points[0][1];int ans = 1;// 遍历所有区间for (int[] point : points) {// 如果当前区间的左边界大于上一个区间的右边界if (point[0] > pre) {// 更新 pre 为当前区间的右边界pre = point[1];// 箭的数量加一ans++;}}// 返回最小需要的箭的数量return ans;}
}


http://www.ppmy.cn/ops/108802.html

相关文章

【AirTest脚本】使用shell操作Android开发者选项

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 正文总结 正文 有些设置懒得去手机上点了&#xff0c;直接使用AirTest脚本使用shell操作android开发者选项&#xff0c;打开显示轨迹&#xff0c;显示坐标等选项。…

tp5中怎么用redis

tips1&#xff1a; 在TP5中使用Redis需要进行以下几个步骤&#xff1a; 一、安装Redis扩展 打开composer.json文件&#xff0c;并添加"predis/predis"作为项目依赖。运行composer update命令来安装依赖。 二、配置Redis连接信息 打开config/database.php文件&am…

Superset二次开发之修改Docker容器env 参数

背景&#xff1a; 基于Superset3.0版本在Linux服务器部署Docker版本的Superset项目&#xff0c;配置了Redis地址为A&#xff0c;项目运行许久&#xff0c;查询性能一直很缓慢&#xff0c;今日打算解决&#xff0c;忽发现&#xff0c;防火墙一直开启着。遂&#xff0c;关闭防火墙…

深度学习(八)-图像色彩操作

图像色彩调整 亮度调整 对HSV空间的V分量进行处理可以实现对图像亮度的增强。 直接将彩色图像灰度化&#xff0c;也可以得到代表图像亮度的灰度图进行图像处理&#xff0c;计算量比HSV颜色空间变化低。但在HSV空间中进行处理可以得到增强后的彩色图像。 opencv读取图片是BGR…

分析源码学习c++(srs中http客户端)

文章目录 背景基础知识c标准库虚函数虚函数使用方法 虚析构函数 HTTP客户端使用方法TCP传输层分析使用方法结构分析连接函数读写函数 协议层分析初始化函数发送请求响应数据解析 背景 通过阅读源码&#xff0c;编写分析笔记来学习C是一种非常有效且深入的方法&#xff0c;能帮助…

使用AI写WebSocket知识是一种怎么样的体验?

一、WebSocket基础知识 1. WebSocket概念 1.1 为什么会出现WebSocket 一般的Http请求我们只有主动去请求接口&#xff0c;才能获取到服务器的数据。例如前后端分离的开发场景&#xff0c;自嘲为切图仔的前端大佬找你要一个配置信息的接口&#xff0c;我们后端开发三下两下开…

Kotlin协程的取消机制:深入理解和优雅实现

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 Kotlin协程提供了一种高效的方式来处理并发和异步任务。在协程的生命周期管理中&#xff0c;取消协程是一项重要的操作。本文将深入探讨Kotlin协…

(六十七)第 10 章 内部排序(快速排序)

示例代码 qSort.h // 快速排序实现头文件#ifndef Q_SORT_H #define Q_SORT_H#include "errorRecord.h"#define MAX_SIZE 20 #define NUM 8typedef int KeyType; typedef int InfoType;typedef struct {KeyType key;InfoType otherInfo; } RecType;typedef struct {Re…