使用Python向人们分发糖果

假设我们要通过以下方式将一定数量的糖果分配给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填充

  • 索引:= 0

  • 而糖果> 0

    • res [index mod n]:= res [index mod n] +糖果和索引的最小值+ 1

    • 糖果:=糖果– 1

    • 索引:=索引+ 1

  • 返回资源

示例

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

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]