用 Python 向人们分发糖果

pythonserver side programmingprogramming更新于 2025/11/4 2:20:17

假设我们想按照以下方式向一排 n 个人分发一定数量的糖果 −

  • 然后我们给第一个人 1 颗糖果,给第二个人 2 颗糖果,以此类推,直到给最后一个人 n 颗糖果。
  • 之后,我们再次回到行的开头,给第一个人 n + 1 颗糖果,给第二个人 n + 2 颗糖果,以此类推,直到给最后一个人 2 * n 颗糖果。

我们将重复此过程,直到糖果用完。最后一个人将获得我们剩余的所有糖果(不一定比之前的礼物多一颗)。

我们必须返回一个表示糖果最终分配的数组。因此假设糖果为 7,且 n = 3,则输出将为 [2, 2, 3]。因此,首先第一个人会得到 1。数组为 [1, 0, 0],第二个人得到 2,然后数组为 [1, 2, 0],第三个人得到 3,然后数组为 [1, 2, 3],最后第一个人再次得到 1,因此数组为 [2, 2, 3]

为了解决这个问题,我们将遵循以下步骤 −

  • res 是一个包含 n 个元素的数组,并用 0 填充
  • index := 0
  • while candies > 0
    • res[index mod n] := res[index mod n] + min of candies and index + 1
    • candies := candies – 1
    • index := index + 1
  • 返回 res

示例

让我们看看下面的实现以便更好地理解 −

class Solution(object):
   def distributeCandies(self, candies, num_people):
      res = [0 for i in range(num_people)]
      index = 0
      while candies>0:
         res[index%num_people] += min(candies,index+1)
         candies-=(index+1)
         index+=1
      return res
ob1 = Solution()
print(ob1.distributeCandies(8, 3))

输入

8
3

输出

[3, 2, 3]

相关文章


有用资源