leetcode 困难题 1606. 找到处理最多请求的服务器

张开发
2026/4/18 18:09:21 15 分钟阅读

分享文章

leetcode 困难题 1606. 找到处理最多请求的服务器
Problem: 1606. 找到处理最多请求的服务器优先队列最小堆有序集合的最小堆存储{结束时间 当前服务器索引}若当前时间 最小结束时间则pop且将索引放入可用集合te然后集合te查找 可用的服务器的若没找到拿到第一个pq.push({arrival[i] load[i], ind}); 集合中删除该索引te.erase(ind);服务器的使用频次统计cnt[ind]Codeusing pr pairint, int; class Solution { public: vectorint busiestServers(int k, vectorint arrival, vectorint load) { priority_queuepr, vectorpr, decltype(greaterpr()) pq; int n arrival.size(), index, a, ind; pq.push({arrival[0] load[0], 0}); vectorint ret; vectorint cnt(k, 0); vectorbool available(k, true); available[0] false; cnt[0] 1; setint te; setint::iterator it; for(int i 1; i k; i) te.insert(i); for(int i 1; i n; i) { index i % k; while(!pq.empty() pq.top().first arrival[i]) { ind pq.top().second; te.insert(ind); pq.pop(); } if(pq.size() k) continue; it te.lower_bound(index); if(it te.end()) ind *te.begin(); else ind *it; pq.push({arrival[i] load[i], ind}); cnt[ind]; te.erase(ind); } int mx INT_MIN; for(int i 0; i k; i) { if(mx cnt[i]) mx cnt[i]; } for(int i 0; i k; i) { if(mx cnt[i]) ret.push_back(i); } return ret; } };

更多文章