首页 > 其他 > 详细

1103. 分糖果 II『简单』

时间:2020-06-08 22:42:17      阅读:50      评论:0      收藏:0      [点我收藏+]

题目来源于力扣(LeetCode

一、题目

1103. 分糖果 II

题目相关标签:数学

技术分享图片

提示:

  • 1 <= candies <= 10^9
  • 1 <= num_people <= 1000

二、解题思路

  1. 情景模拟方式,当 candies 大于 0 时,一直循环遍历 num_people

  2. 定义变量 index 来记录每次需要分发的糖果数量

  3. 每次遍历判断 candies 是否能够分发本次遍历的元素

  4. 满足时,往 ans 数组的相应索引上加上相应的糖果数量,继续下一次的循环

  5. 不满足时,当剩余的糖果分给当前遍历的索引,结束循环

三、代码实现

public static int[] distributeCandies(int candies, int num_people) {
    int[] ans = new int[num_people];
    // 记录每次循环需要分出去的糖果数
    int index = 1;
    // 循环直到 candies 小于等于 0
    while (candies > 0) {
        // 每次循环前都判断 candies 是否大于 0
        for (int i = 0; i < num_people && candies > 0; i++) {
            // candies 糖果数不够分时
            if (candies < index) {
                // 剩余的糖果给当前遍历的索引
                ans[i] += candies;
                candies = 0;
                break;
            }
            // candies 糖果数够分时
            ans[i] += index;
            candies -= index;
            index += 1;
        }
    }
    return ans;
}

四、执行用时

技术分享图片

五、部分测试用例

public static void main(String[] args) {
    int candies = 7, num_people = 4;  // output:{1, 2, 3, 1}
//    int candies = 10, num_people = 3;  // output:{5, 2, 3}

    int[] result = distributeCandies(candies, num_people);
    System.out.println(Arrays.toString(result));
}

1103. 分糖果 II『简单』

原文:https://www.cnblogs.com/zhiyin1209/p/13068706.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!