当前位置: 首页 > news >正文

力扣最热100题——56.合并区间

吾日三省吾身

还记得梦想吗

正在努力实现它吗

可以坚持下去吗

目录

吾日三省吾身

力扣题号:56. 合并区间 - 力扣(LeetCode)

题目描述

Java解法一:排序然后原地操作

具体代码如下

Java解法二:new一个list,然后两端操作

具体代码如下

解法一的C++版本

总结


 


力扣题号:56. 合并区间 - 力扣(LeetCode)

注:下述题目描述和示例均来自力扣

题目描述

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

示例 1:

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。

提示:

  • 1 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 104


Java解法一:排序然后原地操作

  1. 特殊情况处理: 首先,检查输入的区间数组是否为空或只包含一个区间。如果是这种情况,直接返回原始的区间数组,因为不需要合并。

  2. 排序: 使用 Arrays.sort 方法对区间数组进行排序。排序的依据是区间的起始位置(o1[0] - o2[0]),这确保了数组按照起始位置升序排列。

  3. 合并重叠区间: 遍历排序后的区间数组。对于每一对相邻的区间,检查它们是否有重叠。如果存在重叠,将两个区间合并成一个,并用合并后的区间替代原来的两个区间。这一过程使用一个循环和条件语句来判断是否有重叠。

  4. 转换为数组: 使用 list.size() 创建一个相应长度的二维数组,并将 List 中的元素复制到该数组中。最后返回这个二维数组作为结果

具体代码如下
class Solution {public int[][] merge(int[][] intervals) {int length = intervals.length;// 0 个和一个都不用比了,直接返回if (length <= 1) {return intervals;}// 利用比较器来先排个序Arrays.sort(intervals, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {return o1[0] - o2[0];}});// 定义一个list,这样长度才是动态的List<int[]> list = new ArrayList<>(Arrays.asList(intervals));for (int i = 0; i < list.size() - 1; i++) {// 获取第一个数组int[] arr1 = list.get(i);int start1 = arr1[0];int end1 = arr1[1];// 获取第二个数组int[] arr2 = list.get(i + 1);int start2 = arr2[0];int end2 = arr2[1];// 判断是否有重合if (end1 >= start2) {// 有重合,得到并集// [2,3],[4,5],[6,7],[8,9],[1,10]int[] bing = {Math.min(start1, start2), Math.max(end1, end2)};list.remove(i);list.set(i, bing);i--;}}int[][] res = new int[list.size()][];// 转化为int[][]int i = 0;for (int[] ints : list) {res[i++] = ints;}return res;}
}

虽然说不是很快,你就说好不好理解吧  (`へ´*)ノ


Java解法二:new一个list,然后两端操作

具体代码如下

作者:力扣官方题解
链接:https://leetcode.cn/problems/merge-intervals/solutions/203562/he-bing-qu-jian-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

下面是力扣的代码

  1. 特殊情况处理: 首先检查输入的区间数组是否为空。如果为空,直接返回一个空的二维数组 new int[0][2] 表示无合并区间。

  2. 排序: 使用 Arrays.sort 方法对区间数组进行排序,排序的依据是区间的起始位置,即 interval1[0] - interval2[0]

  3. 遍历合并: 遍历排序后的区间数组。对于每个区间,检查是否与之前的合并结果有重叠。如果没有重叠,直接将当前区间加入合并结果列表中。如果有重叠,更新合并结果列表的最后一个区间的结束位置,确保合并后的区间仍然是不重叠的。

  4. 转换为数组: 将最终的合并结果列表转换为二维数组,并返回作为结果。

class Solution {public int[][] merge(int[][] intervals) {if (intervals.length == 0) {return new int[0][2];}Arrays.sort(intervals, new Comparator<int[]>() {public int compare(int[] interval1, int[] interval2) {return interval1[0] - interval2[0];}});List<int[]> merged = new ArrayList<int[]>();for (int i = 0; i < intervals.length; ++i) {int L = intervals[i][0], R = intervals[i][1];if (merged.size() == 0 || merged.get(merged.size() - 1)[1] < L) {merged.add(new int[]{L, R});} else {merged.get(merged.size() - 1)[1] = Math.max(merged.get(merged.size() - 1)[1], R);}}return merged.toArray(new int[merged.size()][]);}
}

算你巧妙,但是我的还是更好理解一点(*^▽^*)

但是你小子也没快多少嘛  ╭(╯^╰)╮

解法一的C++版本

class Solution {
public:std::vector<std::vector<int>> merge(std::vector<std::vector<int>>& intervals) {int length = intervals.size();// 0 个和一个都不用比了,直接返回if (length <= 1) {return intervals;}// 利用比较器来先排个序std::sort(intervals.begin(), intervals.end(), [](const std::vector<int>& a, const std::vector<int>& b) {return a[0] < b[0];});// 定义一个vector,这样长度才是动态的std::vector<std::vector<int>> result(intervals);for (int i = 0; i < result.size() - 1; i++) {// 获取第一个数组std::vector<int>& arr1 = result[i];int start1 = arr1[0];int end1 = arr1[1];// 获取第二个数组std::vector<int>& arr2 = result[i + 1];int start2 = arr2[0];int end2 = arr2[1];// 判断是否有重合if (end1 >= start2) {// 有重合,得到并集// [2,3],[4,5],[6,7],[8,9],[1,10]std::vector<int> bing = {std::min(start1, start2), std::max(end1, end2)};result.erase(result.begin() + i);result[i] = bing;i--;}}return result;}
};

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

虽然慢的无语,但你就说过没过吧。。。。 ( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)

总结

挑战力扣失败,o(╥﹏╥)o

被制裁了

相关文章:

力扣最热100题——56.合并区间

吾日三省吾身 还记得梦想吗 正在努力实现它吗 可以坚持下去吗 目录 吾日三省吾身 力扣题号&#xff1a;56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 题目描述 Java解法一&#xff1a;排序然后原地操作 具体代码如下 Java解法二&#xff1a;new一个list&#xf…...

docker学习(十四)docker搭建私服

docker私服搭建&#xff0c;配置域名访问&#xff0c;设置访问密码 启动registry docker run -d \-p 5000:5000 \-v /opt/data/registry:/var/lib/registry \registrydocker pull hello-world docker tag hello-world 127.0.0.1:5000/hello-world docker push 127.0.0.1:5000…...

基于BERTopic模型的英文20新闻数据集主题聚类及可视化

文章目录 bertopic介绍20 newsgroups dataset20 newsgroups数据集下载数据导入nltk数据处理bertopic模型构建模型训练运行模型可视化目前主题的一致性得分语料库建模bertopic介绍 BERTopic 是基于深度学习的一种主题建模方法。BERT 是一种用于 NLP 的预训练策略,它成功地利用…...

【Oracle之DataGuard的初步学习】

** 以下所有均是基于11G版本的 ** 一、DataGuard的部署方式 DG的部署最常用的方式就是直接在备库端部署一个空库然后再设置参数&#xff0c;但是这样做在初始同步时如果数据量过大会耗费较长的时间&#xff1b;相对来说这中方式比较简单不易出错。 还有一种方式就是通过rman的备…...

PyCharm无代码提示解决

PyCharm无代码提示解决方法 在使用PyCharm工具时&#xff0c;调用方法却无法进行提示&#xff0c;针对PyCharm无代码提示整理下解决方案 1、Python内置语法无智能提示 复现&#xff1a;我这里以urllib库读取网页内容为例&#xff0c;在通过urlopen(&#xff09;之后调用getur…...

记一次 .NET某设备监控自动化系统 CPU爆高分析

一&#xff1a;背景 1. 讲故事 先说一下题外话&#xff0c;一个监控别人系统运行状态的程序&#xff0c;结果自己出问题了&#xff0c;有时候想一想还是挺讽刺的&#xff0c;哈哈&#xff0c;开个玩笑&#xff0c;我们回到正题&#xff0c;前些天有位朋友找到我&#xff0c;说…...

大数据与云计算

目录 一、大数据时代二、云计算——大数据的计算三、云计算发展现状四、云计算实现机制五、云计算压倒性的成本优势 一、大数据时代 我们先来看看百度关于 “大数据”&#xff08;Big Data&#xff09;的搜索指数。 可以看出&#xff0c;“大数据” 这个词是从2012年才引起关注…...

一. 并行处理与GPU体系架构-并行处理简介

目录 前言0. 简述1. 串行处理与并行处理的区别2. 并行执行3. 容易混淆的几个概念4. 常见的并行处理总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习下课程第一章——并行处…...

vb机试考试成绩分析与统计,设计与实现(高数概率统计)-141-(代码+程序说明)

转载地址http://www.3q2008.com/soft/search.asp?keyword141 前言: 为何口出狂言,作任何VB和ASP的系统, 这个就是很好的一个证明 :) 又有些狂了... 数据库操作谁都会,接触的多了也没什么难的,VB编程难在哪?算法上,这个是一个算法题的毕业设计,里面涉及到对试卷的 平均分,最…...

Arm MMU深度解读

文章目录 一、MMU概念介绍二、虚拟地址空间和物理地址空间2.1、(虚拟/物理)地址空间的范围2.2、物理地址空间有效位(范围) 三、Translation regimes四、地址翻译/几级页表&#xff1f;4.1、思考&#xff1a;页表到底有几级&#xff1f;4.2、以4KB granule为例&#xff0c;页表的…...

2024 年 AI 辅助研发趋势

在2024年&#xff0c;AI辅助研发的应用趋势将非常广泛。举个例子&#xff0c;比如在医疗健康领域&#xff0c;AI将深度参与新药研发、早期癌症研究以及辅助诊断等&#xff0c;助力医疗技术的突破。同时&#xff0c;在农业领域&#xff0c;AI也将通过无人机、智能装备等方式&…...

聊聊pytho中的函数

Python中的函数 一、Python中函数的作用与使用步骤 1、为什么需要函数 在Python实际开发中&#xff0c;我们使用函数的目的只有一个“让我们的代码可以被重复使用” 函数的作用有两个&#xff1a; ① 代码重用&#xff08;代码重复使用&#xff09; ② 模块化编程&#x…...

Python中starmap有什么用的?

目录 前言 starmap函数的作用 starmap函数的用法 starmap函数的示例 1. 对每个元组元素进行求和 2. 对每个元组元素进行乘积 实际应用场景 1. 批量处理函数参数 2. 并行处理任务 3. 批量更新数据库 总结 前言 在Python中&#xff0c; starmap 是一个非常有用的函数&…...

面向切面编程 AOP

提示&#xff1a;主要内容参考动力节点老杜的Spring6讲义。 面向切面编程 AOP 一、AOP介绍二、AOP的七大术语三、切点表达式 IoC使软件组件松耦合。AOP让你能够捕捉系统中经常使用的功能&#xff0c;把它转化成组件。AOP&#xff08;Aspect Oriented Programming&#xff09;&a…...

POS 之 奖励机制

为什么需要有奖惩机制 如果没有奖励&#xff0c;就不会有节点参与POS&#xff0c;运营节点有成本&#xff0c;而奖励正是让运营者获利的方式 如果没有惩罚&#xff0c;网络上会充斥着很多无效节点&#xff0c;会扰乱甚至破坏网络 所有奖励和惩罚在每个 Epoch 实施一次 奖励 什…...

Unity类银河恶魔城学习记录9-7 p88 Crystal instead of Clone源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Blackhole_Skill_Controller.cs using System.Collections; using System…...

导出RWKV模型为onnx

测试模型&#xff1a; https://huggingface.co/RWKV/rwkv-5-world-3b 导出前对modeling_rwkv5.py进行一个修改&#xff1a; # out out.reshape(B * T, H * S) out out.reshape(B * T, H * S, 1) # <<--- modified out F.group_norm(out, nu…...

【LeetCode】整数转罗马数字 C语言 | 此刻,已成艺术(bushi)

Problem: 12. 整数转罗马数字 文章目录 思路解题方法复杂度Code 思路 暴力破解 转换 解题方法 由思路可知 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code char* intToRoman(int num) {char *s (char*)malloc(sizeof(char)*4000), *p s;while(…...

移动App开发常见的三种模式:原生应用、H5移动应用、混合模式应用

引言 在移动应用市场的迅猛发展中&#xff0c;移动App开发正日益成为技术创新和用户体验提升的焦点。对于开发者而言&#xff0c;选择适合自己项目的开发模式成为至关重要的决策。本文将探究移动App开发的三种常见模式&#xff1a;原生应用、H5移动应用和混合模式应用。这三种…...

k8s Secret配置资源,ConfigMap 存储配置信资源管理详解

目录 一、Secret 概念 三种Secret类型 pod三种使用secret的方式 应用场景&#xff1a;凭据&#xff1a; 二、 示例 2.1、用kubectl create secret命令创建 Secret 创建Secret&#xff1a; 查看Secret列表&#xff1a; 描述Secret&#xff1a; 2.2、用 base64 编码&…...

最后的轻量化机会窗口:2024Q3起CUDA 12.4+Triton 2.3将强制启用新梯度截断协议,旧蒸馏Pipeline即将失效

第一章&#xff1a;大模型工程化中的模型蒸馏技术 2026奇点智能技术大会(https://ml-summit.org) 模型蒸馏是将大型教师模型&#xff08;Teacher Model&#xff09;的知识高效迁移至轻量级学生模型&#xff08;Student Model&#xff09;的关键工程手段&#xff0c;其核心目标…...

HexStrike-AI:从合法红队工具到黑客利器

HexStrike-AI原本是网络安全研究员Muhammad Osama开发的合法红队工具&#xff0c;可集成AI代理&#xff0c;自主运行150多种网络安全工具&#xff0c;实现自动化渗透测试与漏洞发现。 开发者描述&#xff1a;“HexStrike-AI通过MCP&#xff08;管理控制协议&#xff09;与外部…...

春联生成模型中文版快速部署教程:3步完成环境配置

春联生成模型中文版快速部署教程&#xff1a;3步完成环境配置 想快速在Linux服务器上部署一个能写春联的AI模型吗&#xff1f;这篇教程将手把手带你完成从零到一的部署过程&#xff0c;无需深厚的技术背景&#xff0c;跟着步骤走就能搞定。 1. 环境准备&#xff1a;安装基础依赖…...

Jetson 启动视觉定制全攻略:从cboot到桌面背景的深度修改

1. Jetson视觉定制全景概览 当你拿到一台崭新的Jetson设备&#xff0c;第一眼看到的往往是那个熟悉的绿色NVIDIA logo。但对于产品开发者来说&#xff0c;这个默认界面就像穿着别人的工作服上班——专业但缺乏品牌个性。我经手过十几个基于Jetson的机器人项目&#xff0c;每次客…...

EndNote X9实战:从Google学术导入到Word完美排版,你的私人文献助理养成记

EndNote X9科研写作全流程指南&#xff1a;从文献收集到期刊投稿的智能解决方案 第一次打开EndNote X9时&#xff0c;我被它简洁的界面和强大的功能所震撼——这不仅仅是一个文献管理工具&#xff0c;更像是为科研人员量身定制的智能写作助手。在经历了无数次手动调整参考文献格…...

从MobileViT到BERT:结构化剪枝如何帮你打造“小钢炮”模型?实战案例与调参避坑指南

从MobileViT到BERT&#xff1a;结构化剪枝实战与调参避坑指南 在移动端和边缘计算场景中&#xff0c;模型小型化已成为AI落地的关键瓶颈。当我们将参数量超过1亿的ViT或BERT部署到手机、嵌入式设备甚至普通GPU服务器时&#xff0c;内存占用大、推理延迟高、能耗超标等问题会集中…...

如何用wiliwili打造终极跨平台B站客户端:Switch、PS4、PC全平台手柄媒体中心

如何用wiliwili打造终极跨平台B站客户端&#xff1a;Switch、PS4、PC全平台手柄媒体中心 【免费下载链接】wiliwili 第三方B站客户端&#xff0c;目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上 项目地址: https://gitcode.com/GitHub_Trending/wi/wiliwi…...

Excel数据导入与批处理脚本的完美结合

在日常工作中,我们常常需要处理大量的重复性工作,而这些工作如果能够通过自动化脚本来完成,无疑会极大地提高我们的工作效率。本文将介绍如何利用一个简单的批处理脚本(.bat文件),结合Excel数据,实现自动打开多个账户页面的功能。 问题背景 假设我们有一个Excel文档,…...

Nano-Banana实战教程:生成可直接嵌入技术文档的矢量化风格图

Nano-Banana实战教程&#xff1a;生成可直接嵌入技术文档的矢量化风格图 你是不是也遇到过这样的烦恼&#xff1f;写技术文档、产品说明书或者设计提案时&#xff0c;想配一张清晰、专业的产品结构图&#xff0c;结果要么是手绘的草图不够看&#xff0c;要么是找的素材风格不搭…...

深度解析:LX Music Desktop开源音乐播放器的技术架构与实战应用

深度解析&#xff1a;LX Music Desktop开源音乐播放器的技术架构与实战应用 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 在数字音乐时代&#xff0c;音乐爱好者们面临着多重困…...