素养提升

完成了HTTP头部的学习

算法笔记

133. 克隆图 - 力扣(LeetCode)

一开始还没做出来,惭愧惭愧,

/*
// Definition for a Node.
class Node {
public int val;
public List<Node> neighbors;
public Node() {
val = 0;
neighbors = new ArrayList<Node>();
}
public Node(int _val) {
val = _val;
neighbors = new ArrayList<Node>();
}
public Node(int _val, ArrayList<Node> _neighbors) {
val = _val;
neighbors = _neighbors;
}
}
*/

class Solution {
public Node cloneGraph(Node node) {
if (node == null) return node;
Deque<Node> queue = new ArrayDeque<>();
Map<Node, Node> map = new HashMap();
queue.offerFirst(node);
Node root = new Node(node.val, new ArrayList<Node>());
map.put(node, root);
while (!queue.isEmpty()) {
Node cur = queue.pollLast();
Node cloneCur = map.getOrDefault(cur, new Node(cur.val, new ArrayList<Node>()));
List<Node> cloneNeighbors = new ArrayList<>();
for (Node neighbor : cur.neighbors) {
if (!map.containsKey(neighbor)) {
map.put(neighbor, new Node(neighbor.val, new ArrayList<Node>()));
queue.add(neighbor);
}
map.get(cur).neighbors.add(map.get(neighbor));
}
}
return root;
}
}
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> neighbors;
public Node() {
val = 0;
neighbors = new ArrayList<Node>();
}
public Node(int _val) {
val = _val;
neighbors = new ArrayList<Node>();
}
public Node(int _val, ArrayList<Node> _neighbors) {
val = _val;
neighbors = _neighbors;
}
}
*/

class Solution {
Map<Node, Node> map = new HashMap<>();
public Node cloneGraph(Node node) {
if (node == null) return null;
if (map.containsKey(node)) {
return map.get(node);
}
Node clone = new Node(node.val, new ArrayList<Node>());
map.put(node, clone);
for (Node neighbor : node.neighbors) {
clone.neighbors.add(cloneGraph(neighbor));
}
return clone;
}
}