【左神算法】最好的安排

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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章