題目: 給你times陣列 裡面有一堆idx當編號的邊版人 還有到達跟離開的時間 在無限多張文盲號碼中 每個到達的人 都會先跟愛蜜莉雅領取前面編號的號碼牌 等到他們受不了之後 他們會把號碼牌歸還給愛蜜莉雅 idx編號是第target個的人是ZIDENS 請問ZIDENS是第幾號文盲 思路: 先到先跑的題目都用queue 由於要用time來比較 而且要看他們的idx 所以用pq<pii>賽他們的資訊 直接模擬 放一堆號碼牌 讓一堆人排隊 每個排隊的人都看看過來在他之前會離開的人 讓他們離開 並且把號碼牌拿回來 然後再讓這個人拿號碼牌 順便看他是不是立丹 ```cpp class Solution { public: int smallestChair(vector<vector<int>>& times, int targetFriend) { int n = times.size(); priority_queue<int , vector<int> , greater<int>> chairs; for (int i = 0; i <= n; i++) chairs.push(i); //arr idx priority_queue<pair<int,int> , vector<pair<int,int>> , greater<pair<int, int>>> arrive_f; //leave chair priority_queue<pair<int,int> , vector<pair<int,int>> , greater<pair<int, int>>> leave_f; for(int i = 0 ; i < n ; i ++) { arrive_f.push({times[i][0] , i}); } while(!arrive_f.empty()) { pair<int,int> nowf = arrive_f.top(); arrive_f.pop(); while(!leave_f.empty() && leave_f.top().first <= nowf.first) { pair<int,int> leavef = leave_f.top(); leave_f.pop(); chairs.push(leavef.second); } int chair = chairs.top(); chairs.pop(); if(nowf.second == targetFriend)return chair; leave_f.push({times[nowf.second][1] , chair}); } return -1; } }; ``` -- ※ 發信站: 批踢踢實業坊(pttweb.org.tw), 來自: 101.12.19.26 (臺灣) ※ 文章網址: https://pttweb.org.tw/Marginalman/M.1728630595.A.B7F