mirror of
https://github.com/devenperez/leetcode.git
synced 2026-06-15 09:57:09 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 88b99caf11 | |||
| 2c96c57870 |
@@ -0,0 +1,31 @@
|
||||
"""
|
||||
# Definition for a Node.
|
||||
class Node:
|
||||
def __init__(self, val = 0, neighbors = None):
|
||||
self.val = val
|
||||
self.neighbors = neighbors if neighbors is not None else []
|
||||
"""
|
||||
|
||||
from typing import Optional
|
||||
from collections import deque
|
||||
class Solution:
|
||||
def cloneGraph(self, node: Optional['Node']) -> Optional['Node']:
|
||||
if not node:
|
||||
return node
|
||||
|
||||
newHead = Node(node.val)
|
||||
|
||||
frontier = deque([ node ])
|
||||
nodeMapping = { node.val: newHead }
|
||||
while len(frontier) > 0:
|
||||
current = frontier.popleft()
|
||||
|
||||
for n in current.neighbors:
|
||||
if n.val not in nodeMapping:
|
||||
newNode = Node(n.val)
|
||||
nodeMapping[newNode.val] = newNode
|
||||
frontier.append(n)
|
||||
nodeMapping[current.val].neighbors.append(nodeMapping[n.val])
|
||||
|
||||
return newHead
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
<h2><a href="https://leetcode.com/problems/clone-graph">133. Clone Graph</a></h2><h3>Medium</h3><hr><p>Given a reference of a node in a <strong><a href="https://en.wikipedia.org/wiki/Connectivity_(graph_theory)#Connected_graph" target="_blank">connected</a></strong> undirected graph.</p>
|
||||
|
||||
<p>Return a <a href="https://en.wikipedia.org/wiki/Object_copying#Deep_copy" target="_blank"><strong>deep copy</strong></a> (clone) of the graph.</p>
|
||||
|
||||
<p>Each node in the graph contains a value (<code>int</code>) and a list (<code>List[Node]</code>) of its neighbors.</p>
|
||||
|
||||
<pre>
|
||||
class Node {
|
||||
public int val;
|
||||
public List<Node> neighbors;
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>Test case format:</strong></p>
|
||||
|
||||
<p>For simplicity, each node's value is the same as the node's index (1-indexed). For example, the first node with <code>val == 1</code>, the second node with <code>val == 2</code>, and so on. The graph is represented in the test case using an adjacency list.</p>
|
||||
|
||||
<p><b>An adjacency list</b> is a collection of unordered <b>lists</b> used to represent a finite graph. Each list describes the set of neighbors of a node in the graph.</p>
|
||||
|
||||
<p>The given node will always be the first node with <code>val = 1</code>. You must return the <strong>copy of the given node</strong> as a reference to the cloned graph.</p>
|
||||
|
||||
<p> </p>
|
||||
<p><strong class="example">Example 1:</strong></p>
|
||||
<img alt="" src="https://assets.leetcode.com/uploads/2019/11/04/133_clone_graph_question.png" style="width: 454px; height: 500px;" />
|
||||
<pre>
|
||||
<strong>Input:</strong> adjList = [[2,4],[1,3],[2,4],[1,3]]
|
||||
<strong>Output:</strong> [[2,4],[1,3],[2,4],[1,3]]
|
||||
<strong>Explanation:</strong> There are 4 nodes in the graph.
|
||||
1st node (val = 1)'s neighbors are 2nd node (val = 2) and 4th node (val = 4).
|
||||
2nd node (val = 2)'s neighbors are 1st node (val = 1) and 3rd node (val = 3).
|
||||
3rd node (val = 3)'s neighbors are 2nd node (val = 2) and 4th node (val = 4).
|
||||
4th node (val = 4)'s neighbors are 1st node (val = 1) and 3rd node (val = 3).
|
||||
</pre>
|
||||
|
||||
<p><strong class="example">Example 2:</strong></p>
|
||||
<img alt="" src="https://assets.leetcode.com/uploads/2020/01/07/graph.png" style="width: 163px; height: 148px;" />
|
||||
<pre>
|
||||
<strong>Input:</strong> adjList = [[]]
|
||||
<strong>Output:</strong> [[]]
|
||||
<strong>Explanation:</strong> Note that the input contains one empty list. The graph consists of only one node with val = 1 and it does not have any neighbors.
|
||||
</pre>
|
||||
|
||||
<p><strong class="example">Example 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>Input:</strong> adjList = []
|
||||
<strong>Output:</strong> []
|
||||
<strong>Explanation:</strong> This an empty graph, it does not have any nodes.
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
<p><strong>Constraints:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li>The number of nodes in the graph is in the range <code>[0, 100]</code>.</li>
|
||||
<li><code>1 <= Node.val <= 100</code></li>
|
||||
<li><code>Node.val</code> is unique for each node.</li>
|
||||
<li>There are no repeated edges and no self-loops in the graph.</li>
|
||||
<li>The Graph is connected and all nodes can be visited starting from the given node.</li>
|
||||
</ul>
|
||||
Reference in New Issue
Block a user