Pythonでn個のアイテムを販売した後に残っているアイテムの数を見つけるプログラム
アイテムと呼ばれる番号のリストと別の値nがあるとします。セールスマンは、ランダムなIDのバッグにアイテムを入れています。セールスマンは、バッグから最大n個のアイテムを削除できます。 n回の取り外し後、バッグ内の異なるIDの最小数を見つける必要があります。
したがって、入力がitems =[2、2、6、6] n =2の場合、ID2またはID6の2つのアイテムを販売できるため、出力は1になり、単一のターゲットを持つアイテムのみがそこに。
これを解決するには、次の手順に従います。
- c:=アイテムに存在する各要素の頻度
- ans:=cのサイズ
- freq:=c内のすべての頻度のリストを並べ替える
- i:=0
- i <周波数のサイズである間、
- freq [i] <=nの場合、
- n:=n --freq [i]
- ans:=ans-1
- それ以外の場合、
- 回答を返す
- i:=i + 1
- freq [i] <=nの場合、
- 0を返す
理解を深めるために、次の実装を見てみましょう。
例
from collections import Counter class Solution: def solve(self, items, n): c = Counter(items) ans = len(c) freq = sorted(c.values()) i = 0 while i < len(freq): if freq[i] <= n: n -= freq[i] ans -= 1 else: return ans i += 1 return 0 ob = Solution() items = [2, 2, 6, 6] n = 2 print(ob.solve(items, n))
入力
[2, 2, 6, 6], 2
出力
1
-
Pythonでマージした後も、最小数の色を見つけるプログラムが残っています
色のリスト(R、G、B)があるとします。これで、2つの異なる色が隣り合っている場合、それらは3番目の色の単一の色のアイテムに変換できます。そのような変換の可能なシーケンスの後に残っているそれらの最小数を見つける必要があります。 したがって、入力がcolors =[G、 R、 G、 B、 R]の場合、以下のように変換できるため、出力は1になります- これを解決するには、次の手順に従います- n:=色のサイズ 色に異なる色が1つしかない場合は、 return n n <=1の場合、 return n x:=0 d:=キーと値のペアを持つマップ{( R、1)、(
-
Pythonで範囲内のノード数を見つけるプログラム
BSTがあり、左と右の境界lとrもあるとすると、lとrの間に値が存在するルート内のすべてのノードの数を見つける必要があります。 したがって、入力が次のような場合 l =7、r =13の場合、8、10、12の3つのノードがあるため、出力は3になります。 これを解決するために、次の手順に従います- スタック:=スタックと最初にルートを挿入し、カウント:=0 スタックが空でないときに、実行します node:=スタックの最上位要素、およびポップ要素 ノードがnullでない場合、 l<=ノードのデータ<=rの場合、 count:=count + 1