区间合并:区间合并问题

区间合并:区间合并问题

区间合并

www.acwing.com/problem/content/805/

  1. 按区间的左端点排序

  2. 扫描整个区间,在这过程中把可能有交点的区间合并

    1. 全包含:不做改动
    2. 相交:right 后移
    3. 相离:更新至下一个维护区间
Java 复制代码
import java.util.*;

public class Main {
    static final int N = 100010;
    static Pair[] pairs = new Pair[N];
    
    static class Pair implements Comparable<Pair> {
        int l, r;
        public Pair(int l, int r) {
            this.l = l;
            this.r = r;
        }
        
        @Override
        public int compareTo(Pair o) {
            if (this.l == o.l) {
                return this.r - o.r;
            }
            return this.l - o.l;
        }
    } 
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            int l = sc.nextInt();
            int r = sc.nextInt();
            pairs[i] = new Pair(l, r);
        }
        
        Arrays.sort(pairs, 0, n);
        int result = 1;
        int right = pairs[0].r;
        for (int i = 1; i < n; i++) {
            if (pairs[i].l <= right) {
                // 合并区间
                right = Math.max(right, pairs[i].r);
            } else {
                // 新区间
                result++;
                right = pairs[i].r;
            }
        }
        System.out.println(result);
    }
}
相关推荐
UQWRJ30 分钟前
菜鸟教程R语言一二章阅读笔记
开发语言·笔记·r语言
飛_31 分钟前
解决VSCode无法加载Json架构问题
java·服务器·前端
岁忧2 小时前
macOS配置 GO语言环境
开发语言·macos·golang
朝朝又沐沐3 小时前
算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现
开发语言·数据结构·c++·算法·链表
木棉软糖3 小时前
一个MySQL的数据表最多能够存多少的数据?
java
魔尔助理顾问3 小时前
系统整理Python的循环语句和常用方法
开发语言·后端·python
Ares-Wang3 小时前
JavaScript》》JS》 Var、Let、Const 大总结
开发语言·前端·javascript
程序视点4 小时前
Java BigDecimal详解:小数精确计算、使用方法与常见问题解决方案
java·后端
愿你天黑有灯下雨有伞4 小时前
Spring Boot SSE实战:SseEmitter实现多客户端事件广播与心跳保活
java·spring boot·spring
薰衣草23334 小时前
一天两道力扣(6)
算法·leetcode