Python
 Computer >> コンピューター >  >> プログラミング >> Python

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]

  1. Pythonのissuperset()

    この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',

  2. 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の値に置き換