赞
踩
该题是贪心算法的一个典型案例。
题目
给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。
示例 1:
输入:intervals = [[0,30],[5,10],[15,20]]
输出:2
核心算法思想如下:
1、对每个会议按照开始时间进行排序(肯定要先考虑开始时间早的会议)
2、初始化一个小根堆,用于存放会议的结束时间。用来告诉我们最近的一个会议什么时候结束
3、遍历每个会议,比较开始时间和堆顶元素,如果开始时间小于堆顶元素,说明会议有冲突,必须新开一个会议室,所以要将该会议的结束时间加入堆中。否则弹出堆顶元素,加入新的结束时间
堆内元素个数便是结果
class Solution {
public int minMeetingRooms(int[][] intervals) {
// Check for the base case. If there are no intervals, return 0
if (intervals.length == 0) {
return 0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。