使用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[indexmodn]:=res[indexmodn]+糖果和索引的最小值+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]