Pythonでk個の増分の後に最も多く発生する数を見つけるプログラム
numsと呼ばれる数値のリストと別の値kがあるとします。ある要素を1つ増やす操作を考えてみましょう。最大でk回実行できますが、取得できる最も頻繁に発生する数値の値を見つける必要があります。複数の解決策がある場合は、可能な限り小さい数を選択してください。
したがって、入力がnums =[1、0、0、0、8、8、8、8] k =8のような場合、出力は8になります。これは、1を7倍に増やして8を取得できるためです。任意の0を1に増やすと、[8、1、0、0、8、8、8、8]が得られます。したがって、結果は8になります。
これを解決するには、次の手順に従います。
- リスト番号を並べ替える
- 低:=0、高:=0
- dist:=0、best:=0
- ret:=-1
- numのサイズが大きい場合は、
- high>0でnums[high]がnums[high-1]と同じでない場合、
- dist:=dist +(high-low)*(nums [high]-nums [high-1])
- 高:=高+ 1
- dist> kの間、do
- dist:=dist --nums [high --1] --nums [low]
- 低:=低+ 1
- 高い-低い>最高の場合、
- 最高:=高-低
- ret:=nums [high-1]
- return ret
- high>0でnums[high]がnums[high-1]と同じでない場合、
理解を深めるために、次の実装を見てみましょう。
サンプルコード
class Solution: def solve(self, nums, k): nums.sort() low, high = 0, 0 dist = 0 best = 0 ret = -1 while high < len(nums): if high > 0 and nums[high] != nums[high - 1]: dist += (high - low) * (nums[high] - nums[high - 1]) high += 1 while dist > k: dist -= nums[high - 1] - nums[low] low += 1 if high - low > best: best = high - low ret = nums[high - 1] return ret ob = Solution() nums = [1, 0, 0, 0, 8, 8, 8, 8] k = 8 print(ob.solve(nums, k))
入力
[1, 0, 0, 0, 8, 8, 8, 8], 8
出力
8
-
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プログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 与えられたリスト入力では、与えられたリストの中で最大の数を見つける必要があります。 ここでは、2つのアプローチについて説明します 並べ替え手法の使用 組み込みのmax()関数を使用する アプローチ1-組み込みのsort()関数を使用する 例 list1 = [18, 65, 78, 89, 90] list1.sort() # main print("Largest element is:", list1[-1]) 出力 Largest element is: