Pythonで1つの数を別の数にするために必要な操作の最小数を見つけるためのプログラム
数値の開始と別の数値の終了(start
- 1ずつ増やす
- 2を掛ける
したがって、入力がstart =5、end =11の場合、出力は2になります。これは、2を掛けて10を取得し、1を加算して11を取得できるためです。
これを解決するには、次の手順に従います-
- ct:=0
- end / 2> =start、do
- end mod 2が1と同じ場合、
- end:=end-1
- end:=end / 2
- ct:=ct + 2
- それ以外の場合、
- end:=end / 2
- ct:=ct + 1
- end mod 2が1と同じ場合、
- ct:=ct +(end-start)
- return ct
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, start, end): ct=0 while(end/2>=start): if end%2==1: end-=1 end=end/2 ct+=2 else: end=end/2 ct+=1 ct+=(end-start) return ct ob = Solution() print(ob.solve(5,11))
入力
5,11
出力
2
-
Pythonでリストのバランスをとるために両端から必要な削除の最小数を見つけるプログラム
0と1を含むリストがあるとすると、リストの前または後ろから値を削除する必要があります。最後に、残りのリストの0と1の数が等しくなるように、必要な削除の最小数を見つける必要があります。 したがって、入力がnums =[1、1、1、0、0、1]の場合、出力は2になります。これは、最初の1と最後の1を削除して、2つの1と2つの0を作成できるためです。 。 これを解決するには、次の手順に従います- 最長:=0 d:=キー0に値-1を入力したマップ currSum:=0 0からnumsのサイズの範囲のiの場合は、 nums [i]が0と同じ場合、 currSum:=currSum-1
-
Pythonで1つの文字列を他の文字列のサブ文字列にするために必要な最小数の操作を見つけるプログラム
2つの文字列sとtがあるとすると、sがtをsの部分文字列にするために必要な操作の最小量を見つける必要があります。これで、各操作で、s内の任意の位置を選択し、その位置の文字を他の任意の文字に変更できます。 したがって、入力がs =abbpqr、t =bbxyの場合、サブストリング bbpqを取得して、pをxに、qをに変更できるため、出力は2になります。 y。 これを解決するには、次の手順に従います- k:=tのサイズ、n:=sのサイズ ans:=10 ^ 10 0からn-kの範囲のiの場合、do ss:=s[インデックスiからi+k-1へ]の部分文字列 ans:=最小のans