题目地址:
https://leetcode.com/problems/distribute-candies-to-people/description/
给定 m m m个糖果和 n n n个人,这些人从左到右排开,从 1 1 1开始报数,报到什么数就会分得多少个糖果。如果糖果有剩余,则从头开始继续报数,直到分完。问最后每个人手里的糖果数。
代码如下:
class Solution {
public:
vector<int> distributeCandies(int candies, int num_people) {
vector<int> res(num_people, 0);
for (int idx = 0; candies > 0; idx++) {
res[idx % num_people] += min(candies, idx + 1);
candies -= idx + 1;
}
return res;
}
};
时间复杂度 O ( m ) O(\sqrt m) O(m),空间 O ( 1 ) O(1) O(1)。