一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。
给你每一个项目开始的时间和结束的时间(给你一个数 组,里面是一个个具体的项目),你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。返回这个最多的宣讲场次。
思想:
每次选一个结束时间最早的项目并淘汰开始时间在该项目奇数时间之前的项目
代码
package com.algorithm.practice;
import java.util.Arrays;
import java.util.Comparator;
public class BestArrange {
public class Program {
int start;
int end;
public Program(int start, int end) {
this.start = start;
this.end = end;
}
}
public static class UpComparator implements Comparator<Program>{
@Override
public int compare(Program o1, Program o2) {
return o1.end-o2.end;
}
}
public static int bestArrange(Program[] programs, int start) {
int result=0;
if (programs==null||programs.length==0){
return 0;
}
Arrays.sort(programs,new UpComparator());
for(int i=0;i<programs.length;i++) {
if (start <= programs[i].start) {
result++;
start = programs[i].end;
}
}
return result;
}
}