解题思路:
每次都可以计算出失败者的位置和下一轮开始人的位置
不断删除、重新开始就能得到最后的获胜者
class Solution:
def findTheWinner(self, n: int, k: int) -> int:
s, Q = 0, [i for i in range(1, n + 1)]
while len(Q) > 1:
#确定该轮失败者的位置
lost = (s + k - 1) % len(Q)
#更新下一轮开始的人
if lost != len(Q) - 1:
s = lost
else:
s = 0
#删除失败者
del Q[lost]
return Q[0]