Python编程:查找最后一个接收气球的孩子的起始索引?

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) % 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程