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

如何给网站做高质量外链新品上市怎么推广词

如何给网站做高质量外链,新品上市怎么推广词,做soho的网站,如何查询一个网站所属的主机文章目录 一、问题描述二、解决思路三、完整代码实现四、关键代码解析1. 区间排序逻辑2. 合并重叠区间3. 列表转数组 五、复杂度分析六、总结 本文重点:本文通过Java代码实现经典的 区间合并算法,详细解析排序、合并逻辑及关键代码片段,帮助…

文章目录

    • 一、问题描述
    • 二、解决思路
    • 三、完整代码实现
    • 四、关键代码解析
      • 1. 区间排序逻辑
      • 2. 合并重叠区间
      • 3. 列表转数组
    • 五、复杂度分析
    • 六、总结

本文重点:本文通过Java代码实现经典的 区间合并算法,详细解析排序、合并逻辑及关键代码片段,帮助读者掌握处理重叠区间问题的核心思路。


一、问题描述

给定一组区间 intervals,其中每个区间表示为 [start_i, end_i],要求合并所有重叠的区间,并返回一个不重叠的区间数组,且这些区间需要覆盖所有原始区间。

示例

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

二、解决思路

合并重叠区间的核心步骤可分为以下两步:

  1. 按起始点排序
    将区间按起始点从小到大排序,确保遍历时只需关注相邻区间是否重叠。

  2. 线性扫描合并
    维护一个合并后的区间列表,依次将每个区间与列表最后一个区间比较:

    • 若当前区间与前一个区间重叠,合并它们(更新结束点)。
    • 若不重叠,直接加入列表。

三、完整代码实现

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Solution {public int[][] merge(int[][] intervals) {if (intervals == null || intervals.length == 0) {return new int[0][];}// 1. 按区间起始点排序Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));List<int[]> merged = new ArrayList<>();merged.add(intervals[0]);// 2. 合并重叠区间for (int i = 1; i < intervals.length; i++) {int[] last = merged.get(merged.size() - 1);int[] current = intervals[i];if (current[0] <= last[1]) {// 合并区间,更新结束点last[1] = Math.max(last[1], current[1]);} else {merged.add(current);}}// 3. 转换List到二维数组return merged.toArray(new int[merged.size()][]);}
}

四、关键代码解析

1. 区间排序逻辑

Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
  • 作用:按区间的起始点(start)升序排序。
  • 示例
    排序前:[[3,5], [1,2], [4,7]] → 排序后:[[1,2], [3,5], [4,7]]
  • 为什么需要排序
    排序后,所有区间按起始点有序排列,只需比较相邻区间即可判断是否重叠,无需回溯。

2. 合并重叠区间

if (current[0] <= last[1]) {last[1] = Math.max(last[1], current[1]);
} else {merged.add(current);
}
  • 逻辑
    • 当前区间的起始点(current[0])如果小于等于合并列表中最后一个区间的结束点(last[1]),说明两个区间重叠,合并后的结束点取二者的较大值。
    • 否则,直接将当前区间加入列表。

3. 列表转数组

return merged.toArray(new int[merged.size()][]);
  • 作用:将 List<int[]> 转换为 int[][]
  • 参数意义
    传入 new int[merged.size()][] 是为了指定返回数组的类型为 int[][]。实际返回的数组长度由列表大小决定,传入的数组仅作为类型标记。

五、复杂度分析

  • 时间复杂度

    • 排序:O(n log n)Arrays.sort 使用快速排序。
    • 合并:O(n),线性遍历一次。
      总时间复杂度O(n log n)
  • 空间复杂度

    • 存储合并结果:O(n)(最坏情况下无重叠区间)。
    • 排序的栈空间:O(log n)
      总空间复杂度O(n)

六、总结

  1. 排序是核心:排序后,只需线性遍历即可合并相邻重叠区间。
  2. 合并逻辑:比较当前区间与合并列表最后一个区间,动态更新结束点。
  3. Java类型转换:通过 toArray 指定返回数组类型,避免类型安全问题。

扩展思考:如果输入区间已经按起始点排序,如何优化算法?此时时间复杂度可降至 O(n)

http://www.dtcms.com/wzjs/355353.html

相关文章:

  • 网站建设费用估计企业管理培训机构
  • 农村建设网站百度一下官网首页网址
  • 福州自助建设网站今晚比赛预测比分
  • 网站加外链百度软件安装
  • 图书馆网站建设的规章制度万江专业网站快速排名
  • 一个人做b2b2c网站怎么推广自己的网站?
  • access做调查表网站竞价托管资讯
  • mcu嵌入式软件开发网站优化排名哪家性价比高
  • 开票 网站建设西安专业网络推广公司
  • asp网站制作实例教程营销网点机构号
  • wordpress 站点换域名西安网站建设公司排名
  • 网络运营维护的工作内容淄博网站制作优化
  • 大型网站的技术架构问题关键词推广工具
  • 竹业网站建设怎么在百度上发广告
  • a站是哪个app百度搜索一下百度
  • 没有网站可以做app吗大连头条热点新闻
  • 建外贸网站需要多少钱google seo是什么啊
  • wordpress修改插件路径厦门seo排名外包
  • 教人做甜品的网站标题优化方法
  • 15年做哪个网站能致富seo优化招商
  • 淄博建网站多少钱免费网络推广的方法
  • 网站都需要公安备案seo是什么及作用
  • 手机怎样设计网站建设seo排名优化的网站
  • 微信小程序开发教程从零开始南宁百度推广排名优化
  • 淄博哪里有做网站的seo查询友情链接
  • 深圳哪里有做网站的公司自己如何制作网页
  • 微信营销和网站建设的磁力搜索引擎
  • 仿牌网站优化2020国内搜索引擎排行榜
  • 网址跳转网站产品推广网站
  • 惠州网站建设多少钱网站服务器ip查询