zoukankan      html  css  js  c++  java
  • 1103. 分糖果 II『简单』

    题目来源于力扣(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));
    }
    
  • 相关阅读:
    POJ3678 KATU PUZZLE
    poj3321(codevs1228)苹果树
    codevs 1955 光纤通信 USACO
    codevs 1027 姓名与ID
    codevs 1051 接龙游戏
    洛谷 P1717 钓鱼
    codevs 1062 路由选择
    洛谷 P1083 借教室
    codevs 2596 售货员的难题
    Vijos 1053 easy sssp
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/13068706.html
Copyright © 2011-2022 走看看