Pythonでターゲット間隔をマージして間隔を見つけるプログラム
重複しない間隔のリストがあるとします。これらは終了時間に基づいてソートされます。別の間隔ターゲットがあります。間隔が重複せず、並べ替えられるように、ターゲットをマージした後の最終間隔を見つけます。
したがって、入力がintervals =[[1、15]、[25、35]、[75、90]]、target =[10、30]のような場合、出力は[[1、35]、[ 75、90]]最初の2つの間隔[1、15]と[25、35]がマージされます。
これを解決するには、次の手順に従います-
-
ivの最後にターゲットを挿入
-
開始時間に基づいてivを並べ替える
-
res:=最初の間隔の新しいリスト
-
i:=1
-
i
-
iv[i]の開始時刻<=resの最後の間隔の終了時刻の場合
-
resの最後の間隔の終了時間=(resの最後の間隔の終了時間とiv [i]の終了時間)の最大値
-
-
それ以外の場合
-
resの最後にiv[i]を挿入します
-
-
i:=i + 1
-
-
解像度を返す
例(Python)
理解を深めるために、次の実装を見てみましょう-
class Solution: def solve(self, iv, target): iv.append(target) iv.sort(key=lambda x: x[0]) res = [iv[0]] i = 1 while i < len(iv): if iv[i][0] <= res[-1][1]: res[-1][1] = max(res[-1][1], iv[i][1]) else: res.append(iv[i]) i += 1 return res ob = Solution() intervals = [ [1, 15], [25, 35], [75, 90] ] target = [10, 30] print(ob.solve(intervals, target))
入力
[[1, 15],[25, 35],[75, 90]], [10, 30]
出力
[[1, 35], [75, 90]]
-
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でターゲットを保持している最短のサイクル長を見つけるプログラム
有向グラフの隣接リストがあるとします。ここで、インデックスiの各リストは、ノードiからの接続されたノードで表されます。目標値もあります。ターゲットを含む最短サイクルの長さを見つける必要があります。解決策がない場合は-1を返します。 したがって、入力が次のような場合 0があることに注意してください。ただし、これは最短ではありません。 これを解決するには、次の手順に従います- 訪問:=新しいセット l:=要素ターゲットのリスト。 長さ:=0 lが空ではない場合は、 長さ:=長さ+ 1 nl:=新しいリスト lの各uについて、 グラフ[u]の各vについて、 vがターゲット