626. 换座位
题目要求两两对换,最后一行 id 如果是奇数则保持原有位置
那么我们看前四行,每两行对换即奇数行要+1
, 而偶数行需要-1
进行位置互换
那怎么列式子?
我们拿5,6 行做例子,我们还可以知道,5 % 2 = 1,6 % 2 = 0,0 的 0次方 = 1
对于 5:id = id + 1 = id + 1 - 2 * 0^(id&1)
对于 6:id = id - 1 = id + 1 - 2 * 0^(id&1)
最后在用ROW_NUMBER()
按顺序生成 id,连续分配1到n的整数
select ROW_NUMBER() over (order by (id + 1 - 2*POWER(0, id&1))) as id, student
from Seat;