欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【左神算法】最好的安排

程序员文章站 2024-03-15 22:31:00
...

1.题目

一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目
的宣讲。 给你每一个项目开始的时间和结束的时间(给你一个数
组,里面 是一个个具体的项目),你来安排宣讲的日程,要求会
议室进行 的宣讲的场次最多。返回这个最多的宣讲场次。

2.code

2.1 思路

思路:主要在于贪心的策略上,是会议开始时间早的先开始,还是会议时间短的先开始,或者会议先结束的先开始。

  • 我们采用会议结束时间短的作为贪心策略。

2.2 code

	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 start){
        Arrays.sort(programs);
        int count = 0;
        for (int i = 0; i < programs.length; i++) {
            if (start<=programs[i].start){
                count++;
                start = programs[i].end;
            }
        }
        return count;
    }