Pythonの遠いバーコード
倉庫にバーコードの列があるとします。 i番目のバーコードはbarcode[i]です。隣接する2つのバーコードが同じにならないように、バーコードを再配置する必要があります。したがって、入力が[1,1,1,2,2,2]の場合、出力は[2,1,2,1,2,1]になります。
これを解決するには、次の手順に従います-
- dという名前のマップを1つ作成します
- バーコード配列に存在する数値の頻度をdに保存します
- x:=空のリスト
- すべてのキーと値のペアをxに挿入します
- i:=0
- res:=長さがバーコードと同じリストを作成し、[0]を入力します
- 頻度に基づいてxを並べ替える
- whilei<結果の長さ
- result [i]:=xの最後のエントリの要素
- xの最後のエントリの頻度値を減らします
- xの最後の要素の頻度が0の場合、そのエントリをxから削除します
- iを2増やします
- i:=1
- whilei<結果の長さ
- result [i]:=xの最後のエントリの要素
- xの最後のエントリの頻度値を減らします
- xの最後の要素の頻度が0の場合、そのエントリをxから削除します
- iを2増やします
- 結果を返す
理解を深めるために、次の実装を見てみましょう-
例
class Solution(object): def rearrangeBarcodes(self, barcodes): d = {} for i in barcodes: if i not in d: d[i] = 1 else: d[i]+=1 x = [] for a,b in d.items(): x.append([a,b]) i = 0 result = [0]*len(barcodes) x = sorted(x,key=lambda v:v[1]) while i <len(result): result[i] = x[-1][0] x[-1][1]-=1 if x[-1][1]==0: x.pop() i+=2 i=1 while i <len(result): result[i] = x[-1][0] x[-1][1]-=1 if x[-1][1]==0: x.pop() i+=2 return result ob = Solution() print(ob.rearrangeBarcodes([1,1,1,2,2,2]))
入力
[1,1,1,2,2,2]
出力
[2, 1, 2, 1, 2, 1]
-
Pythonのissuperset()
この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',
-
PythonでのQuine
Quineは、入力を受け取らないプログラムですが、出力を生成します。独自のソースコードが表示されます。さらに、Quineにはいくつかの条件があります。プログラム内でソースコードファイルを開くことができません。 サンプルコード a=a=%r;print (a%%a);print (a%a) 出力 a=a=%r;print (a%%a);print (a%a) このクワインはどのように機能していますか? ここでは、単純な文字列フォーマットが機能しています。変数「a」を定義し、a内に「a =%r; print(a %% a)」を格納します。次に、aの値を出力し、%rをaの値に置き換