一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。 给你每一个项目开始的时间和结束的时间(给你一个数组,里面 是一个个具体的项目),你来安排宣讲的日程,要求会议室进行 的宣讲的场次最多。返回这个最多的宣讲场次。
思路:这是一个贪心题。这道题我们贪心的策略是找到最早结束的宣讲会来进行选择。因为如果一个项目结束的较晚,其后面可以做的项目,在其之前结束的宣讲是一定可以做的,因此选择结束早的宣讲这样可以选择的次数一定是大于等于选择晚结束的次数的。
package Code07;
import java.util.Arrays;
public class Code06_BestArrange {
public static void main(String[] args) {
}
public static class Program{
public int start;
public int end;
public Program(int start, int end){
this.start = start;
this.end = end;
}
}
public static int bestArrange(Program[] programs, int start){
Arrays.sort(programs,(s1, s2) -> {return s1.end - s2.end;});
int res = 0;
for(int i = 0; i < programs.length; i++){
if(start <= programs[i].start){
res++;
start = programs[i].end;
}
}
return res;
}
}