力扣253会议室II

使用堆排序
priority_queue默认是大顶堆等同于 priority_queue
priority_queue 是小顶堆

先将所有会议的场次按照开始时间先后排序,遍历所有有会议,堆中存储的是之前已经开始会议的结束时间,堆顶的那个会议一定是最早结束的会议,说明该次会议开始时,如果堆顶会议的结束时间比该次会议的开始时间晚,堆顶会议还没有完,之前的其他会议结束的时间比堆顶会议更大也没有完。将该会议入堆。如果堆顶会议的结束时间比该次会议的开始实际早,说明该堆顶会议已经完成了,可以将堆顶会议出堆,再将该次会议入堆。遍历完后,堆中的大小就是需要的会议室数量。

class Solution {
public:
    int minMeetingRooms(vector>& intervals) {
        
        int length=intervals.size();
        if(length==0)
            return 0;
        quicksort(intervals,0,length-1);
        priority_queue,greater > dui;
        dui.push(intervals[0][1]);
        for(int i=1;i=dui.top())   
                dui.pop();
            dui.push(intervals[i][1]);
        }
        return dui.size();
        
    }
    int findmid(vector>& nums,int start,int end)
    {
        int i=start,j=end,mid=i;
        while(i=nums[i][0])
                i++;
            if(i>& nums, int start,int end)
    {
        int mid=findmid(nums,start,end);
        if(mid-1>start)
            quicksort(nums,start,mid-1);
        if(mid+1

你可能感兴趣的:(笔记)