3月打卡活动第5天 LeetCode第1103题:分糖果2(简单)

3月打卡活动第5天 LeetCode第1103题:分糖果2(简单)

  • 题目:排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。注意,就算我们手中的剩下糖果数不够(不比前一次发出的糖果多),这些糖果也会全部发给当前的小朋友。
    在这里插入图片描述
  • 解题思路:循环依次分糖。
class Solution {
    public int[] distributeCandies(int candies, int num_people) {
        int[] ans = new int[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;
    }
}

在这里插入图片描述

  • 题解做法:一样的想法但是题解的代码更简洁,可是运行时间还更长了一点。。
class Solution {
    public int[] distributeCandies(int candies, int num_people) {
        int[] ans = new int[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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在这里插入图片描述

发布了100 篇原创文章 · 获赞 12 · 访问量 2363

猜你喜欢

转载自blog.csdn.net/new_whiter/article/details/104669085