Pythonで指定された時間の同じ数字を再利用して最も近い時間を見つけるプログラム
「hh:mm」形式の24時間の文字列があるとすると、指定された数字を再利用することで形成できる次に近い時刻を見つける必要があります。指定された文字列の数字を何度でも再利用できます。
したがって、入力がs ="03:15"の場合、出力は03:30になります。これは、指定された数字を繰り返す最も近い時刻03:30です。
これを解決するには、次の手順に従います。
- use:=2桁の時と2桁の最小値のリスト
- 可能:=新しいセット
- 関数backtrack()を定義します。これは道をたどります
- パスのサイズが4と同じ場合、
- (path[最初の2桁]concatenate ":" concatenate path [最後の2桁])そしてそれをpossibleに挿入します。
- 戻る
- 使用中のpごとに、
- if(パスのサイズが0でp>
"2")が偽であり、(パスが"2"でp>
"3")が偽であり、(パスのサイズが2でpと同じ> "5")は偽であり、
- backtrack(path + p)
- if(パスのサイズが0でp>
"2")が偽であり、(パスが"2"でp>
"3")が偽であり、(パスのサイズが2でpと同じ> "5")は偽であり、
- メインの方法から次の手順を実行します。
- backtrack(空白の文字列)
- 可能:=可能からの新しいリスト
- 可能なリストを並べ替える
- 範囲0から可能なサイズのiの場合-2、実行
- 可能であれば[i]はsと同じで、
- 返品可能[i+1]
- 可能であれば[i]はsと同じで、
- 返品可能[0]
理解を深めるために、次の実装を見てみましょう。
例
class Solution: def solve(self, s): use = [s[0], s[1], s[3], s[4]] possible = set() def backtrack(path): nonlocal possible, use if len(path) == 4: possible.add(path[:2] + ":" + path[2:]) return for p in use: if (not (len(path) == 0 and p > "2") and not (path == "2" and p > "3") and not (len(path) == 2 and p > "5")): backtrack(path + p) backtrack("") possible = list(possible) possible.sort() for i in range(len(possible) - 1): if possible[i] == s: return possible[i + 1] return possible[0] ob = Solution() s = "03:15" print(ob.solve(s))
入力
"03:15"
出力
03:30
-
Pythonを使用して同じxまたはy座標を持つ最も近い点を見つけるプログラム
ptsと呼ばれる配列で与えられたポイントのセットがあると仮定します。現在の場所である別のポイント(x、y)もあります。有効なポイントを、現在のポイントと同じx座標または同じy座標を共有するポイントとして定義しています。現在の場所(x、y)からマンハッタン距離が最小の有効なポイントのインデックスを返す必要があります。複数のポイントがある場合は、インデックスが最小の有効なポイントを返します。 (注:2点(a、b)と(p、q)の間のマンハッタン距離は| a --p | + | b--q|です。 したがって、入力がpts =[(1,2)、(3,1)、(3,4)、(2,3)、(4,4)] pt =(2
-
Pythonで指定された数値のすべての桁の合計を見つけるプログラム
数値がnumであるとすると、その桁の合計を見つける必要があります。文字列を使用せずに解決する必要があります。 したがって、入力がnum =512の場合、出力は8 =5 + 1+2になります。 8 =5 + 1 + 2であるため、tputは8になります。これを解決するには、次の手順に従います- sum:=0 numは0と同じではありませんが、 sum:=sum +(num mod 10) num:=num/10の商 合計を返す 理解を深めるために、次の実装を見てみましょう- 例 class Solution: def solve(self, nu