一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。
给你每一个项目开始的时间和结束的时间(给你一个数组,里面是一个个具体的项目)
你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。
返回这个最多的宣讲场次。
// 会议的开始时间,结束时间public static class Program {public int start;public int end;public Program(int start, int end) {this.start = start;this.end = end;}}// 比较器,谁的结束时间早,谁排在前面public static class ProgramComparator implements Comparator<Program> {@Overridepublic int compare(Program o1, Program o2) {return o1.end - o2.end;}}// 会议的开始时间和结束时间,都是数值,不会 < 0public static int bestArrange3(Program[] programs,int timePoint) {// timePoint 现在目前来到的时间点// 根据谁的结束时间早排序Arrays.sort(programs, new ProgramComparator());int result = 0;// 依次遍历每一个会议,结束时间早的会议先遍历for (int i = 0; i < programs.length; i++) {// 时间点要小于等于会议的开始时间,要比会议的开始时间要早if (timePoint <= programs[i].start) {result++; // 安排会议场次++timePoint = programs[i].end; // 更新时间点}}return result;}
