LC每日一题|20240603 - 1103. 分糖果 II
排排坐,分糖果。
我们买了一些糖果
candies,打算把它们分给排好队的n = num_people个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友
n颗糖果。然后,我们再回到队伍的起点,给第一个小朋友
n + 1颗糖果,第二个小朋友n + 2颗,依此类推,直到给最后一个小朋友2 * n颗糖果。重复上述过程(每次都比上一次多给出一颗糖果,当到达队伍终点后再次从队伍起点开始),直到我们分完所有的糖果。注意,就算我们手中的剩下糖果数不够(不比前一次发出的糖果多),这些糖果也会全部发给当前的小朋友。
返回一个长度为
num_people、元素之和为candies的数组,以表示糖果的最终分发情况(即ans[i]表示第i个小朋友分到的糖果数)。
提示:
1 <= candies <= 10^91 <= num_people <= 1000
题目等级:Easy
解题思路
暴力
AC代码
class Solution {
fun distributeCandies(candies: Int, num_people: Int): IntArray {
var local = candies
var cur = 1
val res = IntArray(num_people)
while (local > 0) {
val n = Math.min(cur, local)
res[(cur - 1) % num_people] += n
cur++
local -= n
}
return res
}
}