[LeetCode] 1103. Distribute Candies to People 分糖果
Posted Ech2o
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 1103. Distribute Candies to People 分糖果相关的知识,希望对你有一定的参考价值。
题目:
思路:
本题一开始的思路就是按照流程一步步分下去,算是暴力方法,在官方题解中有利用等差数列进行计算的
这里只记录一下自己的暴力解题方式
只考虑每次分配的糖果数,分配的糖果数为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 分糖果的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode --- 1103. Distribute Candies to People 解题思路
LeetCode.1103-向人们分发糖果(Distribute Candies to People)
Leetcode 1103. Distribute Candies to People