1103分のキャンディII:たけた、サブキャンディ。
件名の説明:
我々は、彼らがキューイングされ、N = NUM_PEOPLE 2人の子供を提供するつもりされている、いくつかのキャンディキャンディを買いました。
最初の菓子の子、第二の二人の子供、というように、キャンディのn個の最後の子まで。
その後、私たちはお菓子の2人の* n次の作品への最後の子まで、その上のキャンディー子供のn + 1の最初の部分に、戻ってチームのスタート地点に戻り、N + 2番目の子の星、と。
プロセス(およびチームが再びチームのために始めて開始点から最後に到着したお菓子、与えられた最後のより多くのたびに)我々はすべてのサブお菓子を終えるまでを繰り返します。残りは私たちの手の中にない場合でも、お菓子の数(回以上発行する前にキャンディー)は、これらのキャンディーは、現在のすべての子どもたちに配布されることに注意してください。
NUM_PEOPLE長の配列、およびキャンディーの要素に対する戻り値(すなわちANS [I]は、i番目の数子に割り当てられたキャンディを表す)キャンディー最終分布の場合を表現します。
例1:
入力:キャンディー= 7、NUM_PEOPLE = 4
出力:[1,2,3,1]
説明:
最初に、ANS [0] + = 1 、 配列は、[1,0,0,0]となります。
第二に、ANS [1] + = 2 、 配列は[1,2,0,0]となります。
第三には、[2] + = 3 ANS 、 アレイは[1,2,3,0]となります。
第四に、ANS [3] + = 1 ( つのみキャンディーため)、最終的な配列は、[1,2,3,1]となります。
例2:
入力:キャンディー= 10、= 3 NUM_PEOPLE
出力:[5,2,3]
説明:
最初は、[0] + = 1 ANS 、 アレイは[1,0,0]となります。
第二に、ANS [1] + = 2 、 配列は[1,2,0]となります。
第三には、[2] + = 3 ANS 、 アレイは[2,3]となります。
第四に、ANS [0] + = 4 、 最終的なアレイは[5,2,3]となります。
ヒント:
1 <= candies <= 10^9
1 <= num_people <= 1000
Python代码实现:
class Solution:
def distributeCandies(self, candies: int, num_people: int) -> List[int]:
ans = num_people*[0] # 创建长度为num_people的空列表
j = 1
while candies!=0:
for i in range(num_people):
if candies<=j:
ans[i] += candies
candies=0
break
else:
ans[i] += j
candies = candies - j
j += 1
return ans