题目:
一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目 的宣讲。 给你每一个项目开始的时间和结束的时间(给你一个数组,里面是一个个具体的项目),
你来安排宣讲的日程,要求会 议室进行 的宣讲的场次最多。返回这个最多的宣讲场次。
解题思路
这道题的解题思路是按照项目完成时间,从前到后排序,先做最早结束的项目,然后淘汰掉不能再做的项目。
代码:
public class BestArrange {
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> { //定义一个比较器,按照项目的结束时间,进行排序。
@Override
public int compare(Program o1, Program o2) {
return o1.end - o2.end;
}
}
public static int bestArrange(Program[] programs, int cur) {
Arrays.sort(programs, new ProgramComparator());
int result = 0;
for (int i = 0; i < programs.length; i++) {
if (cur <= programs[i].start) {
result++;
cur= programs[i].end;
}
}
return result;
}
}
博客围绕一道题目展开,采用贪心算法解题。解题思路是按项目完成时间从前到后排序,先做最早结束的项目,再淘汰不能做的项目,还给出了相应代码。
5668

被折叠的 条评论
为什么被折叠?



