解题思路:

注意事项:

参考代码:

import java.util.*; // 导入Java的util包,它包含了很多有用的数据结构和工具类

public class Main { // 定义一个名为Main的公共类

    static class Pair implements Comparable<Pair> { // 在Main类内部定义一个静态内部类Pair,并实现Comparable接口以便排序
        int l, r; // Pair类有两个整数成员变量l和r,代表一个区间的左右端点

        public Pair(int l, int r) { // Pair类的构造函数,用于初始化l和r
            this.l = l; // 使用this关键字明确指定我们正在设置的是实例变量l
            this.r = r; // 使用this关键字明确指定我们正在设置的是实例变量r
        }

        @Override // 重写Comparable接口的compareTo方法,以便我们可以对Pair对象进行排序
        public int compareTo(Pair other) { // compareTo方法接收一个Pair类型的参数other,用于与当前对象进行比较
            return Integer.compare(this.l, other.l); // 使用Integer类的compare方法比较当前对象的l成员变量和other对象的l成员变量,并返回比较结果
        }
    }

    public static void main(String[] args) { // 主函数,程序执行的入口点
        Scanner sc = new Scanner(System.in); // 创建一个Scanner对象sc,用于从标准输入读取数据
        int n = sc.nextInt(); // 读取一个整数n,代表区间的数量
        ArrayList<Pair> lis = new ArrayList<>(); // 创建一个ArrayList对象lis,用于存储Pair对象(即区间)
        for (int i = 0; i < n; i++) { // 使用for循环读取n个区间,并将它们添加到lis中
            int l = sc.nextInt(); // 读取一个整数l,代表区间的左端点
            int r = sc.nextInt(); // 读取一个整数r,代表区间的右端点
            lis.add(new Pair(l, r)); // 创建一个新的Pair对象(即一个新的区间),并将其添加到lis中
        }
        Collections.sort(lis); // 使用Collections类的sort方法对lis进行排序(根据Pair对象的l成员变量进行升序排序)
        Pair lisSorted = lis.get(0); // 获取排序后的lis中的第一个Pair对象(即左端点最小的区间),并将其存储在lisSorted中
        for (int i = 1; i < n; i++) { // 遍历lis中剩余的Pair对象(即区间)
            if (lis.get(i).l <= lisSorted.r) { // 如果当前区间的左端点小于等于lisSorted区间的右端点,说明它们可以合并
                lisSorted.r = Math.max(lis.get(i).r, lisSorted.r); // 更新lisSorted区间的右端点,使其等于当前区间和lisSorted区间中右端点较大的那个
            } else { // 如果当前区间的左端点大于lisSorted区间的右端点,说明它们不能合并,直接输出"no"并结束程序执行
                System.out.println("no"); // 输出"no"表示无法合并所有区间为一个区间
                return; // 结束主函数的执行(即结束程序的执行)
            }
        }
        System.out.println(lisSorted.l + " " + lisSorted.r); // 如果所有区间都可以合并为一个区间,则输出合并后的区间的左右端点(即lisSorted的l和r成员变量)作为结果
    }
}
点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论