文章目录
- [1. 603.连续空余座位](#1. 603.连续空余座位)
-
- [1.1 题干](#1.1 题干)
- [1.2 准备数据](#1.2 准备数据)
- [1.3 思路分析](#1.3 思路分析)
- [1.4 解法](#1.4 解法)
- [1.5 结果截图](#1.5 结果截图)
1. 603.连续空余座位
1.1 题干
表: Cinema
±------------±-----+
| Column Name | Type |
±------------±-----+
| seat_id | int |
| free | bool |
±------------±-----+
Seat_id 是该表的自动递增主键列。
在 PostgreSQL 中,free 存储为整数。请使用 ::boolean 将其转换为布尔格式。
该表的每一行表示第 i 个座位是否空闲。1 表示空闲,0 表示被占用。
查找电影院所有连续可用的座位。
返回按 seat_id 升序排序 的结果表。
测试用例的生成使得两个以上的座位连续可用。
结果表格式如下所示。
示例 1:
输入:
Cinema 表:
±--------±-----+
| seat_id | free |
±--------±-----+
| 1 | 1 |
| 2 | 0 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
±--------±-----+
输出:
±--------+
| seat_id |
±--------+
| 3 |
| 4 |
| 5 |
±--------+
1.2 准备数据
sql
Create table If Not Exists Cinema (seat_id int primary key auto_increment, free bool)
Truncate table Cinema
insert into Cinema (seat_id, free) values ('1', '1')
insert into Cinema (seat_id, free) values ('2', '0')
insert into Cinema (seat_id, free) values ('3', '1')
insert into Cinema (seat_id, free) values ('4', '1')
insert into Cinema (seat_id, free) values ('5', '1')
1.3 思路分析
1.4 解法
sql
select distinct c2.seat_id from Cinema c1,Cinema c2 where abs(c1.seat_id-c2.seat_id)=1 and c1.free=1 and c2.free=1;