题目描述
题解
暴力求解:遍历数组
遍历数组分糖果,直到糖果全部分完,注意处理最后一轮糖果不够的分配。
class Solution:
def distributeCandies(self, candies: int, num_people: int) -> List[int]:
n = num_people
ans = [0]*n # 初始小朋友拥有的糖果数
c = 0 # c表示每轮基础糖果数,初始为0
while candies:
for i in range(n):
if candies < c+i+1:
# print(i)
ans[i] += candies # 如果剩余糖果不足,全给当前位并跳出循环
# print(candies)
candies = 0 # 糖果清零
break
ans[i] = ans[i] + c + i + 1 # 给每位根据轮数发糖果
candies -= (c+i+1) # 糖果数相应减少
c += n # 下一轮基础糖果数
return ans # 没有糖果时跳出while循环,返回结果数组
找规律 – 等差数列
观察发现除最后一份糖果外,之前为从1开始差为1的等差数列。