#题目描述:有一堆糖果n个,有m个小朋友,第一个小朋友分一个,第2个小朋友分2个,第m个分m个;然后第2轮分,第一个小朋友分m+1个 ......
输出:所有小朋友最后所得的糖果个数序列
eg:7个糖果
4个小朋友
1 1
2 2
3 3
4 1
#解题思路:
1、小朋友循环发糖:用模除取余
2、剩下的糖和该给他发的糖相比较,min()函数
3、那个一直更新的下标一直递增
4、更新剩余糖果的数量
#代码:
class Solution {
public:
vector<int> distributeCandies(int candies, int num_people) {
//int cand[num_people]={0}; 定义数组不能直接返回,如果是下一行的vector迭代器就可以
vector<int> cand(num_people, 0); //定义迭代器并初始化
int i=0; //下标一直在累加
while(candies>0) //有糖就分
{
//i%num_people 自动把下标刷回来
//i+1是该给给他的糖果,和剩下的作比较
//糖变少
//i++是换下一个小朋友
cand[i%num_people]+=min(i+1,candies);
candies-=i+1;
i++;
}
return cand;
}
};