From 07f122a418b2fab059a4d299cdc72b88d50d2117 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A9=E1=84=92=E1=85=A8=E1=84=85=E1=85=B5?= =?UTF-8?q?=E1=86=AB?= Date: Fri, 10 Oct 2025 14:12:09 +0900 Subject: [PATCH 1/5] same tree solution --- same-tree/hyer0705.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 same-tree/hyer0705.ts diff --git a/same-tree/hyer0705.ts b/same-tree/hyer0705.ts new file mode 100644 index 000000000..11a5fd3e0 --- /dev/null +++ b/same-tree/hyer0705.ts @@ -0,0 +1,21 @@ +/** + * Definition for a binary tree node. + * class TreeNode { + * val: number + * left: TreeNode | null + * right: TreeNode | null + * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + * } + */ + +function isSameTree(p: TreeNode | null, q: TreeNode | null): boolean { + if (!p && !q) return true; + if (!p || !q) return false; + if (p.val !== q.val) return false; + + return isSameTree(p.left, q.left) && isSameTree(p.right, q.right); +} From df9f1ed82aa17766a7e5a0f9f4acf94c65c583ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A9=E1=84=92=E1=85=A8=E1=84=85=E1=85=B5?= =?UTF-8?q?=E1=86=AB?= Date: Fri, 10 Oct 2025 14:27:25 +0900 Subject: [PATCH 2/5] remove nth node from end of list solution --- remove-nth-node-from-end-of-list/hyer0705.ts | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 remove-nth-node-from-end-of-list/hyer0705.ts diff --git a/remove-nth-node-from-end-of-list/hyer0705.ts b/remove-nth-node-from-end-of-list/hyer0705.ts new file mode 100644 index 000000000..2e353a735 --- /dev/null +++ b/remove-nth-node-from-end-of-list/hyer0705.ts @@ -0,0 +1,34 @@ +/** + * Definition for singly-linked list. + * class ListNode { + * val: number + * next: ListNode | null + * constructor(val?: number, next?: ListNode | null) { + * this.val = (val===undefined ? 0 : val) + * this.next = (next===undefined ? null : next) + * } + * } + */ + +function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null { + if (!head) return null; + + let current = head; + let nodeLen = 0; + while (current.next) { + current = current.next; + nodeLen++; + } + + if (nodeLen - n < 0) return head.next; + + current = head; + let count = 0; + while (count < nodeLen - n) { + current = current.next; + count++; + } + current.next = current.next.next; + + return head; +} From dfff6ef129c9e68b7ca81a4b129906c2afa0a18f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A9=E1=84=92=E1=85=A8=E1=84=85=E1=85=B5?= =?UTF-8?q?=E1=86=AB?= Date: Fri, 10 Oct 2025 15:01:18 +0900 Subject: [PATCH 3/5] number of connected components in an undirected graph solution --- .../hyer0705.ts | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 number-of-connected-components-in-an-undirected-graph/hyer0705.ts diff --git a/number-of-connected-components-in-an-undirected-graph/hyer0705.ts b/number-of-connected-components-in-an-undirected-graph/hyer0705.ts new file mode 100644 index 000000000..f3e27c7f0 --- /dev/null +++ b/number-of-connected-components-in-an-undirected-graph/hyer0705.ts @@ -0,0 +1,36 @@ +export class Solution { + /** + * @param n: the number of vertices + * @param edges: the edges of undirected graph + * @return: the number of connected components + */ + countComponents(n: number, edges: number[][]): number { + const parent = Array.from({ length: n }, (_, i) => i); + let components = n; + + const find = (i: number): number => { + if (parent[i] === i) { + return i; + } + + parent[i] = find(parent[i]); + return parent[i]; + }; + + const union = (a: number, b: number): void => { + const rootA = find(a); + const rootB = find(b); + + if (rootA !== rootB) { + parent[rootA] = rootB; + components--; + } + }; + + for (const [a, b] of edges) { + union(a, b); + } + + return components; + } +} From 7e329b36ebdb26b45086f57998d4a8cf4c770581 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A9=E1=84=92=E1=85=A8=E1=84=85=E1=85=B5?= =?UTF-8?q?=E1=86=AB?= Date: Fri, 10 Oct 2025 15:18:41 +0900 Subject: [PATCH 4/5] non-overlapping intervals solution --- non-overlapping-intervals/hyer0705.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 non-overlapping-intervals/hyer0705.ts diff --git a/non-overlapping-intervals/hyer0705.ts b/non-overlapping-intervals/hyer0705.ts new file mode 100644 index 000000000..c64541ec2 --- /dev/null +++ b/non-overlapping-intervals/hyer0705.ts @@ -0,0 +1,18 @@ +function eraseOverlapIntervals(intervals: number[][]): number { + intervals.sort((a, b) => a[1] - b[1]); + + let removedCount = 0; + let prevEnd = intervals[0][1]; + + for (let i = 1; i < intervals.length; i++) { + const [start, end] = intervals[i]; + + if (prevEnd > start) { + removedCount++; + } else { + prevEnd = end; + } + } + + return removedCount; +} From bc998d20dc109f11eef0003b9158cd36fba227e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8C=E1=85=A9=E1=84=92=E1=85=A8=E1=84=85=E1=85=B5?= =?UTF-8?q?=E1=86=AB?= Date: Fri, 10 Oct 2025 15:35:27 +0900 Subject: [PATCH 5/5] serialize and deserialize binary tree solution --- .../hyer0705.ts | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 serialize-and-deserialize-binary-tree/hyer0705.ts diff --git a/serialize-and-deserialize-binary-tree/hyer0705.ts b/serialize-and-deserialize-binary-tree/hyer0705.ts new file mode 100644 index 000000000..29f1154f9 --- /dev/null +++ b/serialize-and-deserialize-binary-tree/hyer0705.ts @@ -0,0 +1,54 @@ +/** + * Definition for a binary tree node. + * class TreeNode { + * val: number + * left: TreeNode | null + * right: TreeNode | null + * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + * } + */ + +/* + * Encodes a tree to a single string. + */ +function serialize(root: TreeNode | null): string { + if (!root) return "null"; + + let result = "" + root.val; + + result += "," + serialize(root.left); + result += "," + serialize(root.right); + + return result; +} + +/* + * Decodes your encoded data to tree. + */ +function deserialize(data: string): TreeNode | null { + const values = data.split(","); + let index = 0; + + const buildTree = () => { + const val = values[index]; + index++; + + if (val === "null") return null; + + const node = new TreeNode(Number(val)); + node.left = buildTree(); + node.right = buildTree(); + return node; + }; + + return buildTree(); +} + +/** + * Your functions will be called as such: + * deserialize(serialize(root)); + */