题解 | 活动安排

活动安排

https://www.nowcoder.com/practice/16d971e9e42e4f3b9b1e2b8794796a43

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        ArrayList<int[]> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            int[] arr = new int[2];
            arr[0] = input.nextInt();
            arr[1] = input.nextInt();
            list.add(arr);
        }
        //这一步最重要,将给的活动排序,排序规则为按活动结束时间从小到大排
        //这样做最贪
        list.sort((o1, o2) -> {
            int num = o1[1] - o2[1];
            // num = num == 0 ? (o1[0] - o2[0]) : num;//实际上,开始时间是不需要排序的
            return num;
        });
        int end = 0;
        int sum = 0;
        for (int[] ints : list) {
            if (ints[0] >= end) {//开始时间和上一个的结束时间对比,只要大于就是不重叠的(因为结束时间已经排好序了),画个时间轴出来就很容易懂了。
                sum++;
                end = ints[1];
            }
        }
        System.out.println(sum);
    }
}

全部评论

相关推荐

11-04 10:30
已编辑
门头沟学院 研发工程师
开心小狗🐶:“直接说答案”
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务