当前位置: 首页 > news >正文

个人练习-Leetcode-1942. The Number of the Smallest Unoccupied Chair

题目链接:https://leetcode.cn/problems/the-number-of-the-smallest-unoccupied-chair/

题目大意:给出一群人到达一个排队的时间和离开派对的时间[arr, lev]。有无数个座位,下标从0开始。当一个人在tm时刻离开时,如果一个人在tm及其以后的时刻到达,那么他可以坐离开的人的座位。每个人会优先挑选下标最小的座位。给出一个targetFriend,求这个人坐到的座位号。【题目保证每个人到达的时间是不同的】

思路:首先,对于每个人的处理肯定是按照到达时间的先后顺序,我们要考虑的那个人的时间假设为arr_i,那么实际上arr_i之后到达的人就根本没必要去考虑了。因此,先把arr_i以及之前到达的人找出来,再按照时间顺序排序。

        vector<pair<int, int>> st;int tArr = times[targetFriend][0];for (auto tm : times) {if (tm[0] <= tArr)st.push_back(make_pair(tm[0], tm[1]));}

随后,对这群需要处理的人遍历即可。(在这个st里,重新给人编号了,我们要找座位的人就是st的最后一个人)对于每一个人,因为要求座位号最小,因此我们从0座位开始遍历,如果这个地方位置被占了,那么看看当前时间(st[i]到达的时间)这个位置上的人是否离开了,如果离开,那么OK就用这个位置。如果这个地方位置没被占,那也OK就用这个位置。

其中occ[]记录该位置上坐的上一个人,如果是-1表示还没有被坐过。

        for (int i = 0; i < st.size(); i++) {int pos = 0;int now = st[i].first;while (occ[pos] != -1) {if (now >= st[occ[pos]].second) {break;}pos++;}occ[pos] = i;if (i == st.size()-1)ret = pos;}

记录最后一个人(我们的目标)坐的座位,返回即可。

完整代码:

bool cmp(pair<int, int> x, pair<int, int> y) {return x.first < y.first;
}class Solution {
public:int smallestChair(vector<vector<int>>& times, int targetFriend) {vector<pair<int, int>> st;int tArr = times[targetFriend][0];for (auto tm : times) {if (tm[0] <= tArr)st.push_back(make_pair(tm[0], tm[1]));}int occ[100001];memset(occ, -1, sizeof(occ));sort(st.begin(), st.end(), cmp);int ret = -1;for (int i = 0; i < st.size(); i++) {int pos = 0;int now = st[i].first;while (occ[pos] != -1) {if (now >= st[occ[pos]].second) {break;}pos++;}occ[pos] = i;if (i == st.size()-1)ret = pos;}return ret;}
};
http://www.lryc.cn/news/56019.html

相关文章:

  • EMC经典问答85问(59-62问)
  • Java面向对象 - 封装、继承和多态的综合练习(答案+知识点总结)第1关:封装、继承和多态进阶(一)+ 第2关:封装、继承和多态进阶(二)
  • 小迪安全day20WEB漏洞-文件上传之基础及过滤方式
  • LeetCode236.最近的公共祖先
  • 【springcloud 微服务】Spring Cloud Alibaba整合Sentinel详解
  • ASP医院管理系统—病历管理系统的设计与实现
  • 【蓝桥杯】动态规划(dp)入门!| 入门动态规划的正确方式! ——学习笔记
  • 元宇宙与网络安全
  • Pod控制器之hpa
  • 发现一个白嫖GPT4.0的方法!真的是完胜3.5!
  • 数据结构之第四章、ArrayList和顺序表
  • webase全家桶搭建教程过程记录+bug解决
  • openEuler Linux 部署 HadoopHA
  • React-Hooks----useEffect()
  • JavaWeb基础-汇总
  • Niuke:JZ36.二叉树与双向链表
  • javaScript---读懂promise、async/await
  • 【Linux】TCP编程流程
  • SuperMap iDesktop 下载安装,生成本地瓦片,以及发布本地瓦片服务
  • 【ONE·Data || 常见排序说明】
  • 本节作业之跟随鼠标的天使、模拟京东按键输入内容、模拟京东快递单号查询
  • ChatGPT 被大面积封号,到底发生什么了?
  • 教你精通JavaSE语法之第十一章、认识异常
  • display、visibility、opacity隐藏元素的区别
  • Linux Shell 实现一键部署tomcat10+java13
  • 软硬皆施,WMS仓库管理系统+PDA,实现效率狂飙
  • DJ3-2 传输层(第二节课)
  • FrIf-FrIf功能模块概述和与底层驱动的交互
  • 【LeetCode】前 K 个高频元素(堆)
  • Java ---多态