• b_lc_最小未被占据椅子的编号(记录每个时间来的人 + pq)


    有 n 个人,0 到 n - 1 编号。有 无数 张椅子,编号为 0 到 infinity 。
    当一个朋友到达派对时,他会占据 编号最小 且未被占据的椅子。

    当一个朋友离开派对时,他的椅子会立刻变成未占据状态。
    如果同一时刻有另一个朋友到达,可以立即占据这张椅子。

    给你一个下标从 0 开始的二维整数数组 times ,
    其中 times[i] = [arrivali, leavingi] 表示第 i 个朋友到达和离开的时刻,
    同时给你一个整数 targetFriend 。所有到达时间 互不相同 。

    请你返回编号为 targetFriend 的朋友占据的 椅子编号 。
    n <= 1e5,times[i][0] <= 1e5

    思路:先存储每个时间到来、离去的人的编号。然后在遍历每个时间点之前,我先将所有离去的人的作为先加到队列里面,然后在处理坐下的逻辑,这样会将问题简化到最简单

    
    const int N = 1e5 + 5;
    class Solution {
    public:
        int smallestChair(vector<vector<int>>& times, int tar) {
            int n = times.size();
            priority_queue<int, vector<int>, greater<int>> free;
            for (int i = 0; i < N; i++) {
                free.push(i);
            }
            vector<vector<int>> came(N), left(N);
            for (int i = 0; i < n; i++) {
                came[times[i][0]].push_back(i);
                left[times[i][1]].push_back(i);
            }
    
            unordered_map<int, int> mp;
            for (int i = 1; i < N; i++) {
                for (int j : left[i]) {
                    free.push(mp[j]);
                }   
                for (int j : came[i]) {
                    mp[j] = free.top();
                    free.pop();
                }
            }
            return mp[tar];
        }
    };
    
  • 相关阅读:
    网页中加入Flash的代码
    AJAX示例
    图片过滤效果
    ASP.NET性能优化
    什么是AJAX
    动态获取enum的值并且添到List中
    VSTO为Excel快捷菜单添加项
    OpenXML for office SDK 2.5 Download url.
    WebClient
    C#监控本地目录文件变化
  • 原文地址:https://www.cnblogs.com/wdt1/p/15056806.html
Copyright © 2020-2023  润新知