[LeetCode] 0133. クローングラフ

クローングラフ

Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク

中くらい
 

内のノードの参照が与えられると、 接続された 無向グラフ。

を返す ディープコピー グラフの(クローン)。

グラフ内の各ノードには値 (整数) とリスト (リスト[ノード]) 近隣諸国の。

クラスノード { public int val;隣人 }

テストケースの形式:

簡単にするために、各ノードの値はノードのインデックス (1 から始まるインデックス) と同じになります。たとえば、最初のノードは です。 val==1、2番目のノードは val==2など、テスト ケースでは隣接リストを使用してグラフが表現されます。

隣接リスト 順序付けされていないもののコレクションです リスト 有限グラフを表すために使用されます。各リストは、グラフ内のノードの近傍のセットを記述します。

指定されたノードは常に、次の条件を持つ最初のノードになります。 値=1を返却する必要があります。 指定されたノードのコピー クローン化されたグラフへの参照として。

例 1:

入力: adjList = [[2,4],[1,3],[2,4],[1,3]]
出力: [[2,4],[1,3],[2,4],[1,3]]
説明: グラフには 4 つのノードがあります。1 番目のノード (val = 1) の隣接ノードは 2 番目のノード (val = 2)、4 番目のノード (val = 2) の隣接ノードは 1 番目のノード (val = 2) です。 = 1) および 3 番目のノード (val = 3)。3 番目のノード (val = 3) の隣接ノードは 2 番目のノード (val = 2) であり、4 番目のノード (val = 4) の隣接ノードは次のとおりです。 1 番目のノード (val = 1) と 3 番目のノード (val = 3)。

例 2:

入力: adjList = [[]]
出力: [[]]
説明: 入力には空のリストが 1 つ含まれており、グラフには val = 1 のノードが 1 つだけ含まれており、近傍ノードが存在しないことに注意してください。

例 3:

入力: adjList = []
出力: []
説明: これは空のグラフであり、ノードはありません。

制約:

  • グラフ内のノードの数は範囲内です [0, 100].
  • 1 <= Node.val <= 100
  • Node.val はノードごとに一意です。
  • グラフには繰り返されるエッジや自己ループはありません。
  • グラフは接続されており、指定されたノードから開始してすべてのノードにアクセスできます。

パイソン

				
					# ノードの定義。 class Node: def __init__(self, val=0, neighbors=None): self.val = val self.neighbors = neighbors if neighbors is not None else [] class 解決策: def __init__(self): self.visited = {} def cloneGraph(self, node: 'Node') -> 'Node': ノードでない場合: ノードを返す self.visited 内のノードの場合: self.visited[node] を返す clone_node = Node(node.val , []) self.visited[node] = clone_node if node.neighbors: clone_node.neighbors = [self.cloneGraph(n) for n in node.neighbors] return clone_node
				
			
ja日本語