0305-分糖果

Posted nick17t

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0305-分糖果相关的知识,希望对你有一定的参考价值。

分糖果

题目卡片

  • 时间: 2020-03-05

  • 题目链接:

  • Tag:math

思路

题目挺简单的,按着题目描述来可暴力求解。

"对小朋友们进行遍历,每次都发小朋友们应得数量的糖,直到剩下的糖不足以分发应得数量,就直接给最后那位倒霉孩子。"

代码

class Solution {
    public int[] distributeCandies(int candies, int num_people) {
        int i = 0;
        int []ans = new int[num_people];
/* 1.
        while(candies!=0){
          int n = i+1;
            if(n<=candies){
                ans[i%num_people] += n;
                candies -= n; 
            }
            else{
                ans[i%num_people] += candies;
                break; 
            }
            i++;
*/
        while(candies!=0){
            int n = i+1;     
            ans[i % num_people] += Math.min(candies, n);
            candies -= Math.min(candies,n);
        }
        /* 
        *  取candies(现有糖果数量)和n(按规则应获得的需要糖果数量)中的最小值,
        *  给第 i%num_people (轮到的第几位小朋友),
        *  +=  累加每一轮所发的新糖果,
        *  min的作用是当糖果不够用时,全送给那个小朋友,
        *  与此同时,candies数量减去已送出的数量。
        */
        }
        return ans;
    }
}

扩展

这个的标签是Math,所以肯定是有相关的数学公式能帮忙省事儿。

leetCode中@QuantumDriver给出详细解释,不在此赘述。

以上是关于0305-分糖果的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode之小孩分糖果

575. 分糖果『简单』

leetcode-分糖果问题-84

LeetCode 5219. 每个小孩最多能分到多少糖果

58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)

华为机试真题 C++ 实现分糖果