解题思路:
注意事项:
参考代码:
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 人评分
川哥的吩咐 (C++代码)浏览:1008 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:879 |
WU-复数求和 (C++代码)浏览:1995 |
WU-整除问题 (C++代码)浏览:610 |
最小公倍数 (C语言代码)浏览:1025 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:537 |
罗列完美数 (C语言代码)浏览:491 |
1134题解(求分析)浏览:722 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:455 |
三角形 (C语言代码)浏览:653 |