用 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]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

