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