程序查找在Python中收到最后一个气球的孩子的开始索引?
假设我们有n个孩子围成一圈站着,他们在等着气球。分配从第k个孩子开始(首先在索引0处进行),然后给他们一个气球,他们离开了圈子。现在,每个第k个孩子都会获得一个气球,顺时针方向旋转,直到只剩下一个孩子获得气球为止。因此,如果我们有n和k,我们必须找到接收最后一个气球的孩子的起始索引。
因此,如果输入类似于n = 3 k = 2,则输出将为1,在第一个回合中,孩子2得到一个气球,然后离开,因此圆圈将为[0,1]。在第二轮中,孩子0得到一个气球,圆圈将为[1]。
为了解决这个问题,我们将按照以下步骤操作:
arr:=范围从0到n的新列表
初始化:= 0
当arr的大小> 1时,执行
删除:=(init + k)mod的arr大小
删除arr [删除]
初始化:=删除
返回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
以上是 程序查找在Python中收到最后一个气球的孩子的开始索引? 的全部内容, 来源链接: utcz.com/z/338055.html