Pythonでキャンディーを人々に配布する
次のように、いくつかのキャンディーをn人の列に配布したいとします-
- 次に、最初の人に1つのキャンディーを、2番目の人に2つのキャンディーを、というように、最後の人にn個のキャンディーを与えるまで続けます。
- その後、再び列の最初に戻り、最初の人にn + 1個のキャンディー、2番目の人にn + 2個のキャンディーを与え、最後の人に2*n個のキャンディーを与えるまで続けます。 。
キャンディーがなくなるまで、このプロセスを繰り返します。最後の人は残りのキャンディーをすべて受け取ります(必ずしも前のギフトより1つ多いとは限りません)。
キャンディーの最終的な分布を表す配列を返す必要があります。したがって、キャンディーが7で、n =3であるとすると、出力は[2、2、3]になります。したがって、最初の人は1を取得し、配列は[1、0、0]、2番目の人は2、次に配列は[1、2、0]、3番目の人は3、次に配列は[1、 2、3]、そして最後に最初のものが再び1を得たので、配列は[2、2、3]
これを解決するには、次の手順に従います-
- resはn個の要素の配列であり、0で埋めます
- インデックス:=0
- キャンディー>0
- res [index mod n]:=res [index modn]+キャンディーの最小値とインデックス+1
- キャンディー:=キャンディー– 1
- index:=index + 1
- return res
例
理解を深めるために、次の実装を見てみましょう-
class Solution(object): def distributeCandies(self, candies, num_people): res = [0 for i in range(num_people)] index = 0 while candies>0: res[index%num_people] += min(candies,index+1) candies-=(index+1) index+=1 return res ob1 = Solution() print(ob1.distributeCandies(8, 3))
入力
8 3
出力
[3, 2, 3]
-
Pythonのissuperset()
この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',
-
Pythonのアンダースコア(_)
Pythonでは、シングルアンダースコア(_)を使用する場合もあれば、ダブルアンダースコア(__)を使用する場合もあります。 Pythonでは、アンダースコアを使用する次のケースがあります。 最後の式の値をインタープリターに格納する場合。 一部の値を無視したい場合。 変数または関数の宣言用。 数値の横方向の値の桁を区切るため。 「国際化(i18n)」または「ローカリゼーション(l10n)」機能としても使用されます。 今度はすべての場合のいくつかの例。 インタプリタで使用 Pythonインタープリターは、最後の式の値を「_」に格納します。 >>> 20 20 &