小慕正在开发一个“智能租房匹配系统”,帮助用户在海量房源中快速找到符合需求的住所。系统支持以下核心操作: 任务: 1. addRoom(id, area, price, rooms, address):添加一套编号为 `id`,面积为 `area`,月租金为 `price`,卧室数量为 `rooms`,地址为 `address`(假设格式为 `[横坐标 x, 纵坐标 y]`,即地址数组长度为2) 的房源。如果系统中不存在编号为 `id` 的房源,则添加该房源并返回 `true`;如果已存在该房源,则更新对应的房源信息并返回 `false`。 2. deleteRoom(id):删除编号为 `id` 的房源。如果存在编号为 `id` 的房源,则删除该房源并返回 `true`;如果不存在该房源,则返回 `false`。 3. queryRoom(area, price, rooms, address, orderBy):查询符合以下筛选条件的房源,并根据 `orderBy` 的排序要求返回房源编号的序列: - 筛选条件: - 面积大于等于 `area`。 - 月租金小于等于 `price`。 - 卧室数量为 `rooms`。 - 排序要求:按 `orderBy` 中的排序条件依次进行排序。 - `orderBy` 是一个,每个元素是 `[parameter, order]`,表示对某个参数的排序方式: - `parameter` 表示排序的条件: - `1`:面积 (`area`) - `2`:月租金 (`price`) - `3`:地址的 (`address`) - `order` 表示排序的顺序: - `1`: - `-1`:降序 - 如果按照排序条件仍然相同,则按房源编号升序排列。
提示:带虚线的词点一下有通俗解释。
输入描述
- 第一行:一个整数 `Q`,表示总共的查询次数。 - 后续的 `Q` 行,每行一个命令 `cmd` 和若干参数: - **`RentingSystem`**:初始化租房系统。 - **`addRoom`**:添加房源,输入房源的详细信息: - 一个整数 `id`:房源编号。 - 一个整数 `area`:房源面积。 - 一个整数 `price`:房源月租金。 - 一个整数 `rooms`:房源卧室数量。 - 一个数组 `address`:房源坐标,输入地址数组。 - **`deleteRoom`**:删除房源,输入房源的 `id`。 - **`queryRoom`**:查询符合条件的房源,输入: - 一个整数 `area`:房源最小面积。 - 一个整数 `price`:房源最大月租金。 - 一个整数 `rooms`:房源卧室数量。 - 一个数组 `address`:查询地址,输入查询地址坐标数组。 - 一个二维数组 `orderBy`:查询结果排序条件,输入数组的长度,每个元素是 `[parameter, order]`,表示按哪个参数排序,排序方式是升序(1)或降序(-1)。
输出描述
- 对于每个操作,输出相应的结果: - **`RentingSystem`**:初始化操作,不返回参数,输出`null`。 - **`addRoom`**:若房源成功添加,返回 `true`;若房源信息被更新,返回 `false`。 - **`deleteRoom`**:若房源成功删除,返回 `true`;若房源不存在,返回 `false`。 - **`queryRoom`**:返回符合条件的房源编号列表,按照 `orderBy` 中的排序条件排序,若排序条件相同,则按房源编号升序排列。如果没有符合条件的房源,返回一个-1的列表。
示例
示例 1
输入
5 RentingSystem addRoom 3 24 200 2 0 1 addRoom 1 10 400 2 1 0 queryRoom 1 400 2 1 1 2 3 1 2 -1 deleteRoom 3
输出
null True True 1 3 True
说明:1. **`RentingSystem`**:初始化租房系统。 2. **`addRoom`** 第一次:房源信息 ID=3,面积=24,价格=200,卧室数=2,地址=[0,1],成功添加返回 `true`。 3. **`addRoom`** 第二次:房源信息 ID=1,面积=10,价格=400,卧室数=2,地址=[1,0],成功添加返回 `true`。 4. **`queryRoom`**:查询条件:面积≥1,价格≤400,卧室数=2,地址=[1,1],排序条件:`3 1`(按曼哈顿距离升序),`2 -1`(按月租金降序),返回 `[1, 3]`。 5. **`deleteRoom`**:删除房源 ID=3,成功删除返回 `true`。
示例 2
输入
10 RentingSystem deleteRoom 3 addRoom 3 24 200 2 0 1 addRoom 1 10 400 2 1 0 addRoom 2 20 300 3 2 2 addRoom 4 30 500 1 1 1 addRoom 5 35 700 2 3 3 addRoom 6 40 800 1 4 4 queryRoom 1 500 2 2 2 2 1 1 2 -1 queryRoom 3 100 2 2 2 2 3 1 2 1
输出
null False True True True True True True 1 3 -1
说明:1. **`RentingSystem`**:初始化租房系统。 2. **`deleteRoom`**:删除房源 ID=3,返回 `false`(房源不存在)。 3. **`addRoom`**:分别添加 6 个房源,每个房源的 ID、面积、月租金、卧室数和地址信息。 4. **`queryRoom`** 第一次:查询条件:面积≥1,月租金≤500,卧室数=2,地址=[2, 2],排序条件:`1 1`(按面积升序)、`2 -1`(按价格降序),返回 `[1, 3, 2]`。 5. **`queryRoom`** 第二次:查询条件:面积≥3,月租金≤100,卧室数=2,地址=[2, 2],排序条件:`3 1`(按曼哈顿距离升序)、`2 1`(按价格升序),返回 `-1`(没有符合条件的房源)。
时间限制 1000 ms · 内存限制 128 MB