[電源ボタン - 小さな毎日の練習] 1103分キャンディII(パイソン)

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

 

公開された44元の記事 ウォンの賞賛5 ビュー4474

おすすめ

転載: blog.csdn.net/ljb0077/article/details/104672437