题目描述
一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。 给你每一个项目开始的时间和结束的时间(给你一个数组,里面是一个个具体的项目),你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。返回这个最多的宣讲场次。
思路
选择最先结束的项目,去掉因为做这个项目而不能做的项目,再从剩下的项目中选择最先结束的项目。
代码
package Algorithm;
import java.util.Arrays;
import java.util.Comparator;
public class BestArrange {
public static class Program{
int start;
int end;
public Program(int s,int e){
this.start=s;
this.end=e;
}
}
public static class ProgramComparator implements Comparator<Program> {
@Override
public int compare(Program o1, Program o2) {
return o1.end-o2.end;
}
}
public static int bestArrange(Program[] programs,int start){
Arrays.sort(programs,new ProgramComparator());
int count=0;
for (Program program:programs) {
if (program.start>=start){
count++;
start=program.end;
}
}
return count;
}
}