df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

相邻交换座位

中等 21-classic 面试经典题型 case-whenparityordered

把相邻两个座位上的学生互换:1 号和 2 号换、3 号和 4 号换……

  • 座位号 id 是从 1 开始的连续整数(没有缺号、不重复),但输入行是乱序的。
  • 每个奇数号座位与它后面的偶数号座位交换学生。座位总数为奇数时,最后一个座位没有搭档,学生不动。
  • 只交换学生,座位号本身不变;student 为 null 的座位照样参与交换(null 跟着换过去)。

输入

  • seat(id, student)

输出

列依次为 id, student(列顺序要一致),按 id 升序排列,每个座位一行。

输入表 (case odd,共 3 个 case:odd、even、single)

seat local/odd/seat
#idint64studentstring
1 3 Cai
2 1 Ann
3 5 Eve
4 2 Bo
5 4 Du
共 5 行

期望输出 (case odd,行顺序要一致,列顺序要一致)

#idInt64studentString
1 1 Bo
2 2 Ann
3 3 Du
4 4 Cai
5 5 Eve
共 5 行