1847. 最近的房间

1847. 最近的房间


题目链接:1847. 最近的房间

代码如下:

cpp 复制代码
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;
	}
};
相关推荐
阿巴~阿巴~4 分钟前
构造函数:C++对象初始化的核心机制
开发语言·c++
效效超爱笑1 小时前
单链表应用实践
数据结构·c++·链表
啊阿狸不会拉杆1 小时前
《算法导论》第 10 章 - 基本数据结构
数据结构·c++·b树·算法·链表·排序算法
俄城杜小帅3 小时前
QML与C++交互的方式
开发语言·c++·交互
Vesan,4 小时前
无人机开发分享——基于行为树的无人机集群机载自主决策算法框架搭建及开发
c++·算法·决策树·无人机
R-G-B6 小时前
【24】C++实战篇——【 C++ 外部变量】 C++多个文件共用一个枚举变量,外部变量 extern,枚举外部变量 enum
c++·c++ 外部变量·c++文件共用一个枚举变量·外部变量 extern·枚举外部变量 enum
落羽的落羽6 小时前
【C++】哈希表原理与实现详解
数据结构·c++
快乐的划水a6 小时前
表驱动法-灵活编程范式
c++·链表
疯狂的Alex6 小时前
未来20年哪几种编程语言会保持优势?哪几种编程语言会得到更广泛的应用?
java·开发语言·c++·python·c#
爱吃生蚝的于勒7 小时前
一文学会c++继承 组合
java·c语言·开发语言·数据结构·c++·算法·蓝桥杯