Pythonで正しい順序で空港を見つけるプログラム?
[出発地、目的地]のペアとしてフライトのリストがあるとします。リストはシャッフルされます。訪問したすべての空港を正しい順序で見つける必要があります。複数の有効なものがある場合は、辞書式順序で最も小さいものを最初に返します。
したがって、入力がflights =[["Mumbai"、 "Kolkata"]、["Delhi"、 "Mumbai"]、["Kolkata"、 "Delhi"]]の場合、出力は['Delhi' 、'ムンバイ'、'コルカタ'、'デリー']
これを解決するために、次の手順に従います
-
ins:=空のマップ
-
outs:=空のマップ
-
adj_list:=空のマップ
-
関数dfs()を定義します。これは空港になります
-
outs [airport]がnullでない場合は、実行してください
-
nxt:=adj_list[airport]のサイズ-outs[airport]
-
outs [airport]:=outs [airport]-1
-
ansの最後に空港を挿入
-
-
Solve()というメソッドを定義します。これにはフライトが必要です
-
フライトの開始と終了のペアごとに、実行します
-
adj_list [s]
の最後にeを挿入します -
outs [s]:=outs [s] + 1
-
ins [e]:=ins [e] + 1
-
-
adj_listのすべての値のリスト内の各lについて、実行します
-
リストを並べ替えるl
-
-
start:=null、end:=null
-
adj_listのすべてのキーのリストにある空港ごとに、実行します
-
outs [airport]-ins [airport]が1と同じ場合、
-
nullでない場合は、
-
戻る
-
-
開始:=空港
-
-
それ以外の場合、outs [airport] --ins [airport]が-1と同じ場合、
-
endがnullでない場合、
-
戻る
-
-
終了:=空港
-
-
それ以外の場合、outs [airport] --ins [airport]が0と同じでない場合、
-
戻る
-
-
-
start:=startがnullでない場合はstart、それ以外の場合はadj_listのすべてのキーの最小値
-
ans:=新しいリスト
-
dfs(start)
-
ansの逆を返す
-
メインメソッドからsolve(flights)を呼び出します
例
from collections import defaultdict class Solution: def solve(self, flights): ins = defaultdict(int) outs = defaultdict(int) adj_list = defaultdict(list) for s, e in flights: adj_list[s].append(e) outs[s] += 1 ins[e] += 1 for l in adj_list.values(): l.sort() start = None end = None for airport in adj_list.keys(): if outs[airport] - ins[airport] == 1: if start: return start = airport elif outs[airport] - ins[airport] == -1: if end: return end = airport elif outs[airport] - ins[airport] != 0: return start = start if start else min(adj_list.keys()) ans = [] def dfs(airport): while outs[airport]: nxt = len(adj_list[airport]) - outs[airport] outs[airport] -= 1 dfs(adj_list[airport][nxt]) ans.append(airport) dfs(start) return ans[::-1] ob = Solution() flights = [ ["Mumbai", "Kolkata"], ["Delhi", "Mumbai"], ["Kolkata", "Delhi"] ] print(ob.solve(flights))
入力
[["Mumbai", "Kolkata"], ["Delhi", "Mumbai"], ["Kolkata", "Delhi"] ]
出力
['Delhi', 'Mumbai', 'Kolkata', 'Delhi']
-
Pythonでポリゴンの領域を見つけるプログラム
順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの領域を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は15になります。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です return x1 * y2-y1 * x2 メインの方法から、次の手順を実行します N:=ポイントのサイズ (firstx、firsty):=points [0] (prevx、prevy):=(fir
-
Pythonでポリゴンの周囲を見つけるプログラム
順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの周囲を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は16になります。 2つの辺の長さは3で、2つの辺の長さは5なので、2 * 5 + 2 * 3=16です。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です ユークリッド距離である((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))の平方根を返します (x1、y1)