Pythonでターゲットに到達するために必要な特定の操作の数を見つけるためのプログラム
startとendの2つの値があるとすると、これらの操作を使用して、開始から終了に変換するために必要な操作の最小数を見つける必要があります-
-
1だけデクリメントします
-
2を掛ける
したがって、入力がstart =2、end =7の場合、出力は3になります。これは、2を乗算して4を取得し、次に2を乗算して8を取得し、次に1を減算して7を取得できるためです。
これを解決するには、次の手順に従います-
-
ans:=0
-
次のことを無限に行います。
-
end <=startの場合、
-
ans + start − end
を返します
-
-
それ以外の場合、終了が奇数の場合、
-
end:=end + 1、ans:=ans + 1
-
-
それ以外の場合
-
end:=終了の商/ 2
-
ans:=ans + 1
-
-
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, start, end): ans = 0 while True: if end <= start: return ans + start - end elif end % 2: end += 1 ans += 1 else: end //= 2 ans += 1 ob1 = Solution() start = 2 end = 7 print(ob1.solve(start, end))
入力
2, 7
出力
3
-
Pythonで1つの数を別の数にするために必要な操作の最小数を見つけるためのプログラム
数値の開始と別の数値の終了(start
-
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