力扣2402.会议室 III

力扣2402.会议室 III

  • 双堆模拟

    • 一个堆存未占用的会议室编号
    • 一个堆存已占用的结束时间和编号
cpp 复制代码
  class Solution {
  public:
      int mostBooked(int n, vector<vector<int>>& meetings) {
          int cnt[n];
          memset(cnt,0,sizeof(cnt));
          priority_queue<int,vector<int>,greater<>> idle;
          for(int i=0;i<n;i++) idle.push(i);
          priority_queue<pair<long,int>,vector<pair<long,int>>,greater<>> using_;
          //按照开始时间排序
          sort(meetings.begin(),meetings.end(),[](auto &a,auto &b){
              return a[0] <b[0];
          });
          for(auto &m:meetings)
          {
              long st = m[0],end = m[1],id;
              //已经到了结束时间,弹出去
              while(!using_.empty() && using_.top().first <= st)
              {
                  idle.push(using_.top().second);
                  using_.pop();
              }
              //没有空会议室了
              if(idle.empty())
              {
                  auto [e,i] = using_.top();
                  using_.pop();
                  //结束时间 + 等待时间
                  end += e - st;
                  id = i;
              }
              //有空会议室
              else
              {
                  id = idle.top();
                  idle.pop();
              }
              cnt[id] ++;
              using_.emplace(end,id);
          }
          int ans = 0;
          //取最大的cnt
          for(int i=0;i<n;i++)
              if(cnt[i] > cnt[ans])
                  ans = i;
          return ans;
      }
  };
相关推荐
A懿轩A1 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
古希腊掌管学习的神1 小时前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
云边有个稻草人1 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
半盏茶香1 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
忘梓.2 小时前
解锁动态规划的奥秘:从零到精通的创新思维解析(3)
算法·动态规划
️南城丶北离2 小时前
[数据结构]图——C++描述
数据结构··最小生成树·最短路径·aov网络·aoe网络
✿ ༺ ོIT技术༻2 小时前
C++11:新特性&右值引用&移动语义
linux·数据结构·c++
tinker在coding4 小时前
Coding Caprice - Linked-List 1
算法·leetcode
XH华8 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生9 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论