问题描述
小R有一个特殊的随机播放规则。他首先播放歌单中的第一首歌,播放后将其从歌单中移除。如果歌单中还有歌曲,则会将当前第一首歌移到最后一首。这个过程会一直重复,直到歌单中没有任何歌曲。
例如,给定歌单 [5, 3, 2, 1, 4]
,真实的播放顺序是 [5, 2, 4, 1, 3]
。
保证歌曲中的id
两两不同。
代码
from collections import deque
def solution(n: int, a: list) -> list:
assert n == len(a)
q = deque(a)
a = []
for _ in range(n):
a.append(q.popleft())
if q:
q.append(q.popleft())
return a
if __name__ == '__main__':
print(solution(n = 5, a = [5, 3, 2, 1, 4]) == [5, 2, 4, 1, 3])
print(solution(n = 4, a = [4, 1, 3, 2]) == [4, 3, 1, 2])
print(solution(n = 6, a = [1, 2, 3, 4, 5, 6]) == [1, 3, 5, 2, 6, 4])