1847. 最近的房间
题目链接:1847. 最近的房间
代码如下:
class Solution
{
public:vector<int> closestRoom(vector<vector<int>>& rooms, vector<vector<int>>& queries){sort(rooms.begin(), rooms.end(), [&](vector<int>& a, vector<int>& b){return a[1] > b[1];});vector<int> query_ids(queries.size());iota(query_ids.begin(), query_ids.end(), 0);//按照minSize从大到小排序ranges::sort(query_ids, {}, [&](int i) { return -queries[i][1]; });vector<int> res(queries.size(), -1);set<int> room_ids;int j = 0;for (int i : query_ids){int prefered_id = queries[i][0], minSize = queries[i][1];while (j < rooms.size() && rooms[j][1] >= minSize){room_ids.insert(rooms[j][0]);j++;}int diff = INT_MAX;auto it = room_ids.lower_bound(prefered_id);if (it != room_ids.begin()){auto p = prev(it);diff = prefered_id - *p; //左边的差res[i] = *p;}if (it != room_ids.end() && *it - prefered_id < diff) //右边的差更小{res[i] = *it;}}return res;}
};