From 248075e80b59ad182f0ca4035f901e1adffafe3c Mon Sep 17 00:00:00 2001 From: zhaocchen Date: Wed, 20 Oct 2021 18:59:19 +0800 Subject: [PATCH 1/4] feat: add typescript solution to lc problem: No.0133.Clone Graph --- solution/0100-0199/0133.Clone Graph/README.md | 37 +++++++++++++++++++ .../0100-0199/0133.Clone Graph/README_EN.md | 37 +++++++++++++++++++ .../0100-0199/0133.Clone Graph/Solution.ts | 32 ++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 solution/0100-0199/0133.Clone Graph/Solution.ts diff --git a/solution/0100-0199/0133.Clone Graph/README.md b/solution/0100-0199/0133.Clone Graph/README.md index 9ddb2d980fbb0..2a7e8792c788a 100644 --- a/solution/0100-0199/0133.Clone Graph/README.md +++ b/solution/0100-0199/0133.Clone Graph/README.md @@ -99,6 +99,43 @@ ``` +### **TypeScript** + +```ts +/** + * Definition for Node. + * class Node { + * val: number + * neighbors: Node[] + * constructor(val?: number, neighbors?: Node[]) { + * this.val = (val===undefined ? 0 : val) + * this.neighbors = (neighbors===undefined ? [] : neighbors) + * } + * } + */ + +function cloneGraph(node: Node | null): Node | null { + if (node == null) return null; + + const visited = new Map(); + visited.set(node, new Node(node.val)); + const queue = [node]; + while (queue.length) { + const cur = queue.shift(); + for (let neighbor of cur.neighbors || []) { + if (!visited.has(neighbor)) { + queue.push(neighbor); + const newNeighbor = new Node(neighbor.val, []); + visited.set(neighbor, newNeighbor); + } + const newNode = visited.get(cur); + newNode.neighbors.push(visited.get(neighbor)); + } + } + return visited.get(node); +}; +``` + ### **...** ``` diff --git a/solution/0100-0199/0133.Clone Graph/README_EN.md b/solution/0100-0199/0133.Clone Graph/README_EN.md index e7c7f9bb943fa..40e319c7cedf9 100644 --- a/solution/0100-0199/0133.Clone Graph/README_EN.md +++ b/solution/0100-0199/0133.Clone Graph/README_EN.md @@ -113,6 +113,43 @@ class Node { ``` +### **TypeScript** + +```ts +/** + * Definition for Node. + * class Node { + * val: number + * neighbors: Node[] + * constructor(val?: number, neighbors?: Node[]) { + * this.val = (val===undefined ? 0 : val) + * this.neighbors = (neighbors===undefined ? [] : neighbors) + * } + * } + */ + +function cloneGraph(node: Node | null): Node | null { + if (node == null) return null; + + const visited = new Map(); + visited.set(node, new Node(node.val)); + const queue = [node]; + while (queue.length) { + const cur = queue.shift(); + for (let neighbor of cur.neighbors || []) { + if (!visited.has(neighbor)) { + queue.push(neighbor); + const newNeighbor = new Node(neighbor.val, []); + visited.set(neighbor, newNeighbor); + } + const newNode = visited.get(cur); + newNode.neighbors.push(visited.get(neighbor)); + } + } + return visited.get(node); +}; +``` + ### **...** ``` diff --git a/solution/0100-0199/0133.Clone Graph/Solution.ts b/solution/0100-0199/0133.Clone Graph/Solution.ts new file mode 100644 index 0000000000000..5ef0e065b7cca --- /dev/null +++ b/solution/0100-0199/0133.Clone Graph/Solution.ts @@ -0,0 +1,32 @@ +/** + * Definition for Node. + * class Node { + * val: number + * neighbors: Node[] + * constructor(val?: number, neighbors?: Node[]) { + * this.val = (val===undefined ? 0 : val) + * this.neighbors = (neighbors===undefined ? [] : neighbors) + * } + * } + */ + + function cloneGraph(node: Node | null): Node | null { + if (node == null) return null; + + const visited = new Map(); + visited.set(node, new Node(node.val)); + const queue = [node]; + while (queue.length) { + const cur = queue.shift(); + for (let neighbor of cur.neighbors || []) { + if (!visited.has(neighbor)) { + queue.push(neighbor); + const newNeighbor = new Node(neighbor.val, []); + visited.set(neighbor, newNeighbor); + } + const newNode = visited.get(cur); + newNode.neighbors.push(visited.get(neighbor)); + } + } + return visited.get(node); +}; \ No newline at end of file From 580b6ab9d23a80ea009e3113293c7f437acb150e Mon Sep 17 00:00:00 2001 From: Yang Libin Date: Wed, 20 Oct 2021 23:32:42 +0800 Subject: [PATCH 2/4] Update README.md --- solution/0100-0199/0133.Clone Graph/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/0100-0199/0133.Clone Graph/README.md b/solution/0100-0199/0133.Clone Graph/README.md index 2a7e8792c788a..084b1120ad0d8 100644 --- a/solution/0100-0199/0133.Clone Graph/README.md +++ b/solution/0100-0199/0133.Clone Graph/README.md @@ -115,7 +115,7 @@ */ function cloneGraph(node: Node | null): Node | null { - if (node == null) return null; + if (node == null) return null; const visited = new Map(); visited.set(node, new Node(node.val)); From da40b85b8d76dc962213623da49ccef3785c77db Mon Sep 17 00:00:00 2001 From: Yang Libin Date: Wed, 20 Oct 2021 23:33:06 +0800 Subject: [PATCH 3/4] Update README_EN.md --- solution/0100-0199/0133.Clone Graph/README_EN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/0100-0199/0133.Clone Graph/README_EN.md b/solution/0100-0199/0133.Clone Graph/README_EN.md index 40e319c7cedf9..edc5b72a45d22 100644 --- a/solution/0100-0199/0133.Clone Graph/README_EN.md +++ b/solution/0100-0199/0133.Clone Graph/README_EN.md @@ -129,7 +129,7 @@ class Node { */ function cloneGraph(node: Node | null): Node | null { - if (node == null) return null; + if (node == null) return null; const visited = new Map(); visited.set(node, new Node(node.val)); From 3de2f70c8cfe2f71b2eab3d274bda42fc14b8079 Mon Sep 17 00:00:00 2001 From: Yang Libin Date: Wed, 20 Oct 2021 23:33:26 +0800 Subject: [PATCH 4/4] Update Solution.ts --- solution/0100-0199/0133.Clone Graph/Solution.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/solution/0100-0199/0133.Clone Graph/Solution.ts b/solution/0100-0199/0133.Clone Graph/Solution.ts index 5ef0e065b7cca..28fa7f007f933 100644 --- a/solution/0100-0199/0133.Clone Graph/Solution.ts +++ b/solution/0100-0199/0133.Clone Graph/Solution.ts @@ -11,7 +11,7 @@ */ function cloneGraph(node: Node | null): Node | null { - if (node == null) return null; + if (node == null) return null; const visited = new Map(); visited.set(node, new Node(node.val)); @@ -29,4 +29,4 @@ } } return visited.get(node); -}; \ No newline at end of file +};