96SEO 2026-02-23 12:24 10
。

算法分为以下几个步骤:
那么数组列表末尾是起始值最大的区间。
那么会不会出现新元素和栈内多个元素都交叉呢?不会的,因为如果与多个元素交叉,这里假设末尾元素为S0S_0
style="margin-right:
0.0576em;">S
style="height:
0.05em;">0
style="height:
0.15em;">
,那么必然与倒数第二个元素S1S_1style="margin-right:
0.0576em;">S
style="height:
0.05em;">1
style="height:
0.15em;">
相交,设新元素为SSstyle="margin-right:
0.0576em;">S
,那么必然有以下关系式:/>S[0]≤S1[1]S1[1]<S0[0]
S[0]<S0[0]
0.0576em;">S[0]≤
style="margin-right:
0.0576em;">S
style="height:
0.05em;">1
style="height:
0.15em;">
[1]style="margin-right:
0.0576em;">S
style="height:
0.05em;">1
style="height:
0.15em;">
[1]<style="margin-right:
0.0576em;">S
style="height:
0.05em;">0
style="height:
0.15em;">
[0]⟹style="margin-right:
0.0576em;">S
[0]<style="margin-right:
0.0576em;">S
style="height:
0.05em;">0
style="height:
0.15em;">
[0]/>那么新元素要比末尾元素S0S_0
style="margin-right:
0.0576em;">S
style="height:
0.05em;">0
style="height:
0.15em;">
提前入栈,不符合按起始值顺序加入的假设。
/>
packagecn.edu.necpu.problem;importjava.util.*;publicclassIntervalMerger{publicstaticList<int[]>mergeWithStack(int[][]intervals){List<int[]>result=newArrayList<>();if(intervals==null||intervals.length==0){returnresult;}//按照区间的起始位置进行升序排序
Arrays.sort(intervals,Comparator.comparingInt(a->a[0]));//ArrayList
作为容器
ArrayList<int[]>list=newArrayList<>();for(int[]current:intervals){//如果为空,或者没有交叉,就直接加入数组列表中。
if(list.isEmpty()||list.get(list.size()-1)[1]<current[0]){list.add(current);}else{//如果有重叠,合并区间:更新末尾元素的结束位置
int[]top=list.get(list.size()-1);intnewEnd=Math.max(top[1],current[1]);//末尾元素的结束位置
top[1]=newEnd;}}returnlist;}//测试代码
publicstaticvoidmain(String[]args){int[][]intervals={{1,3},{2,6},{8,10},{15,18}};List<int[]>merged=mergeWithStack(intervals);System.out.println("测试用例1");for(int[]interval:merged){System.out.println("["+interval[0]+","+interval[1]+"]");}intervals=newint[][]{{1,3},{2,6},{8,10},{1,18}};merged=mergeWithStack(intervals);System.out.println("测试用例2");for(int[]interval:merged){System.out.println("["+interval[0]+","+interval[1]+"]");}}}/>
测试用例1[1,6][8,10][15,18]测试用例2[1,18]/>
这道题的复杂度分析主要取决于排序,这也是整个算法的性能瓶颈。
我们可以从时间与空间两个维度来具体拆解:
时间复杂度:O(nlogn)O(n
0.0278em;">O(nlo 0.0139em;">gstyle="margin-right:
(O(nlogn)O(n
0.0278em;">O(nlo 0.0139em;">gstyle="margin-right:
Arrays.sort()对区间数组进行排序。在
中,对于原始数据类型或对象数组的排序通常采用优化的快速排序或归并排序,其平均时间复杂度为O(nlogn)O(n
0.0278em;">O(nlo 0.0139em;">gstyle="margin-right:
(O(n)O(n) 0.0278em;">Ostyle="margin-right:
在遍历过程中,对于每个区间,我们只进行一次比较操作(检查与结果列表末尾区间的重叠情况)以及可能的更新操作(修改末尾区间的结束位置)。
get、比较、赋值)都是常数时间O(1)O(1)0.0278em;">O
(1)的,遍历nnn个元素的总时间就是O(n)O(n)0.0278em;">O
(n)。=O(nlogn)+O(n)O(n
0.0278em;">O(nlo 0.0139em;">g 0.0278em;">Ostyle="margin-right:
style="margin-right:
表示法的规则,低阶项和常数系数可以忽略,因此最终的时间复杂度由排序主导,即O(nlogn)O(n
0.0278em;">O(nlo 0.0139em;">gstyle="margin-right:
空间复杂度:O(1)O(1) 0.0278em;">O 0.0278em;">Ostyle="margin-right:
style="margin-right:
空间复杂度的分析取决于我们如何定义“额外空间”:
如果不考虑排序使用的空间:
ArrayList来存储结果。虽然我们在代码中创建了list,但这是用于存储输出结果的,通常不被视为“额外”的辅助空间。
current,top,newEnd等)。0.0278em;">O
(1)。如果考虑排序使用的空间:
的Arrays.sort()对于对象(如int[])的排序,在最坏情况下(虽然现代实现会优化)可能需要O(logn)O(\log
0.0278em;">O(lo 0.0139em;">g 0.0278em;">Ostyle="margin-right:
style="margin-right:
0.0278em;">O
(n)的空间。0.0278em;">O
(n)(主要由排序算法的栈空间或结果存储决定)。总结:
- 时间复杂度:O(nlogn)O(n
\log
0.0278em;">O
(nlostyle="margin-right:
0.0139em;">g
n)(排序是瓶颈)。- 空间复杂度:O(1)O(1)
style="margin-right:
0.0278em;">O
(1)(仅指算法使用的额外变量,不包括结果存储和排序栈空间)。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback