leetcode1103:分糖果

题目的意思很简单,第一个小朋友从1个糖开始发,第二个小朋友发2个,第num_people个小朋友发num_people个,发完一轮,还有糖,继续发,第二轮时,第一个小朋友发num_people+1,第二个小朋友发num_people+2,地num_people个小朋友发2×num_people个。如果还有,那么第三轮,2×num_people +1个

实际上,发多少个苹果可以直接由一个变量确定,每次加一发给当前小朋友就完事了。

循环的退出条件是糖果发完。

  vector<int> distributeCandies(int candies, int num_people)
{
    //赋初值为0
    vector<int> num(num_people,0);
    //每次要分配的糖果
    int candies_dis = 0;
    //如果人数只有1,全部分给他
    if(num_people == 1) { num.push_back(candies); return num;}
    //当糖果不为0时
    while(candies != 0)
        //循环
        for(int i = 0; i < num_people; i ++ )
        {
            //每次分配的糖果都加1
            candies_dis ++;
            //如果分配的糖果小于糖果库,且分配的糖果小于等于糖果库,说明够糖果可分
            if(candies_dis <= candies)
            {
                num[i] += candies_dis;
                candies -= candies_dis; //分配完糖果库
            }
            else
            {
               num[i] += candies; //把剩下的糖果全都给当前的小朋友
               candies = 0;
            }
        }
        return num;
}
};
发布了39 篇原创文章 · 获赞 50 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Hanghang_/article/details/104683609