题目:排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。注意,就算我们手中的剩下糖果数不够(不比前一次发出的糖果多),这些糖果也会全部发给当前的小朋友。
解题思路:循环依次分糖。
classSolution{publicint[]distributeCandies(int candies,int num_people){int[] ans =newint[num_people];int i =0;int c =1;while(candies >0){if(candies < c){
ans[i]+=candies;break;}else{
ans[i]+=c;}if(i == num_people-1){
i =0;}else{
i++;}
candies-=c;
c++;}return ans;}}
题解做法:一样的想法但是题解的代码更简洁,可是运行时间还更长了一点。。
classSolution{publicint[]distributeCandies(int candies,int num_people){int[] ans =newint[num_people];int i =0;while(candies !=0){
ans[i % num_people]+= Math.min(candies, i +1);
candies -= Math.min(candies, i +1);
i +=1;}return ans;}}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/distribute-candies-to-people/solution/fen-tang-guo-ii-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。