Python程序:查找最后拿到气球的孩子起始索引
假设有n个孩子围成一个圈,他们等待领取气球。发放气球从第k个孩子开始(从索引0开始),发给一个孩子气球后,该孩子离开圆圈。然后,按照顺时针方向,每隔k个孩子就发放一个气球,直到只剩下一个孩子领取气球。所以,如果已知n和k,我们需要找到最后拿到气球的孩子起始索引。
例如,如果输入n = 3,k = 2,则输出为1。第一轮,孩子2拿到气球并离开,圆圈变为[0, 1]。第二轮,孩子0拿到气球,圆圈变为[1]。
为了解决这个问题,我们将遵循以下步骤:
arr := 创建一个从0到n的列表
init := 0
当arr的长度大于1时,执行:
remove := (init + k) mod arr的长度
删除arr[remove]
init := remove
返回arr[0]
让我们看下面的实现来更好地理解。
示例
class Solution: def solve(self, n, k): arr = list(range(0, n)) init = 0 while len(arr) > 1: remove = (init + k) % len(arr) del arr[remove] init = remove return arr[0] ob = Solution() n = 3 k = 2 print(ob.solve(n, k))
输入
3,2
输出
1
广告