码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] 1103. Distribute Candies to People 分糖果

时间:2020-03-05 11:50:27      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:get   ble   ems   +=   方式   应该   ++   流程   就是   

题目:

技术图片


 思路:

本题一开始的思路就是按照流程一步步分下去,算是暴力方法,在官方题解中有利用等差数列进行计算的

这里只记录一下自己的暴力解题方式

只考虑每次分配的糖果数,分配的糖果数为1,2,3,4,5,..., 依次加1

再考虑到分配的轮数,可以利用 i % num_people 来求得第i次应该分配到第几个人

最后要注意的是,如果当前糖果数小于本应该分配的糖果数,则将当前糖果全部给予,也就是要判断剩余糖果数 candies 与本该分配糖果数 i+1 的大小,谁小分配谁

代码:

class Solution {
public:
    vector<int> distributeCandies(int candies, int num_people) {
        // vector<int> res(num_people, 0);
        // int i=1;
        // for(int k=0; candies>=i+k*num_people; k++){
        //     while(i <= num_people){
        //         if(candies<i+k*num_people){
        //             res[i-1] += candies;
        //             candies = 0;
        //             break;
        //         }
        //         res[i-1] += i+k*num_people;
        //         candies -= i+k*num_people;
        //         i++;
        //     }
        //     i=1;
        // }
        // if(candies) res[0] += candies;
        // return res;
        vector<int> ans(num_people);    // 初始元素为0
        int i=0;
        while(candies!=0){
            ans[i % num_people] += min(candies, i+1);
            candies -= min(candies, i+1);
            i++;
        }
        return ans;
    }
};

被注释的代码是自己的想法,虽然复杂度相同,看到题解才发现自己小题大做,没有理解透题目

[LeetCode] 1103. Distribute Candies to People 分糖果

标签:get   ble   ems   +=   方式   应该   ++   流程   就是   

原文地址:https://www.cnblogs.com/ech2o/p/12419281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!