zoukankan      html  css  js  c++  java
  • 刷题253.Meeting Rooms II

    一、题目说明

    题目253.Meeting Rooms II,给定一列数,其中每个数表示会议开始、结束时间,计算最少需要的会议上的数量。难度是Medium!

    二、我的解答

    这个题目读懂后,在纸上画上坐标轴,画上各个会议时间的区间,然后从最早开始的会议开始,重叠最大部分即是最大会议室的数量。

    从“0”开始,每次遇到会议开始时间,则会议室的数量+1,遇到结束,会议室的数量-1。剩下的问题,就是设计数据结构和算法了。

    可以用map实现,也可以用数组实现,也可以用堆实现。

    class Solution{
    	public:
    		int minMeetingRooms(vector<vector<int>>& intervals){
    			if(intervals.size()<1) return 0;
    			int curRooms = 0;
    			int result = 0;
    			
    			map<int,int> dp;
    			for(auto interval: intervals){
    				dp[interval[0]]++;
    				dp[interval[1]]--;
    			}	
    
    			for(auto iter: dp){
    				curRooms = curRooms + iter.second;
    				if(curRooms > result){
    					result = curRooms;
    				}
    			}
    			return result;
    		}
    };
    

    三、优化措施

    所有文章,坚持原创。如有转载,敬请标注出处。
  • 相关阅读:
    ffmpeg用法
    文本文件存储格式
    一个守护进程实例
    构造函数初始化列表问题
    Windows系统下远程Linux系统
    printStackTrace
    getParameter
    HTML5新增的属性和废除的属性
    oracle导出表结构及注释
    <input type="text" > size与width区别
  • 原文地址:https://www.cnblogs.com/siweihz/p/12293848.html
Copyright © 2011-2022 走看看