难度:简单
社团共有
num
位成员参与破冰游戏,编号为0 ~ num-1
。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字target
,从 0 号成员起开始计数,排在第target
位的成员离开圆桌,且成员离开后从下一个成员开始计数。请返回游戏结束时最后一位成员的编号。示例 1:
输入:num = 7, target = 4 输出:1示例 2:
输入:num = 12, target = 5 输出:0提示:
1 <= num <= 10^5
1 <= target <= 10^6
题解:
class Solution:def iceBreakingGame(self, num: int, target: int) -> int:# 创建初始列表 people = list(range(num)) # 当前索引 current = 0 # 只剩一个人时停止 while len(people) > 1: # 计算要删除的索引 # current 是当前起始位置 # 往后数 target 个人 current = (current + target - 1) % len(people) # 删除对应位置的成员 people.pop(current) # 注意:删除后,下一轮从当前位置开始 # 不需要额外移动索引,因为pop已经改变了列表 # 返回最后剩下的成员编号 return people[0]