From 5c0a937532d71c8d6f5e8b890612e7e105b1eb6e Mon Sep 17 00:00:00 2001 From: HC-kang Date: Mon, 30 Sep 2024 08:07:16 +0900 Subject: [PATCH 1/7] Feat: 21. Merge Two Sorted Lists --- merge-two-sorted-lists/HC-kang.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 merge-two-sorted-lists/HC-kang.ts diff --git a/merge-two-sorted-lists/HC-kang.ts b/merge-two-sorted-lists/HC-kang.ts new file mode 100644 index 00000000..7b342d73 --- /dev/null +++ b/merge-two-sorted-lists/HC-kang.ts @@ -0,0 +1,31 @@ +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 mergeTwoLists( + list1: ListNode | null, + list2: ListNode | null +): ListNode | null { + let head = new ListNode(); + let current = head; + + while (list1 && list2) { + if (list1.val < list2.val) { + current.next = list1; + list1 = list1.next; + } else { + current.next = list2; + list2 = list2.next; + } + current = current.next; + } + + current.next = list1 || list2; + + return head.next; +} From e7658119842ee8a2d08f8ac6fabb0e1fa09017e0 Mon Sep 17 00:00:00 2001 From: HC-kang Date: Mon, 30 Sep 2024 08:18:25 +0900 Subject: [PATCH 2/7] =?UTF-8?q?Docs:=2021.=20Merge=20Two=20Sorted=20Lists?= =?UTF-8?q?=20=EB=B3=B5=EC=9E=A1=EB=8F=84=20=EB=B0=8F=20=EC=A3=BC=EC=84=9D?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- merge-two-sorted-lists/HC-kang.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/merge-two-sorted-lists/HC-kang.ts b/merge-two-sorted-lists/HC-kang.ts index 7b342d73..f69684ec 100644 --- a/merge-two-sorted-lists/HC-kang.ts +++ b/merge-two-sorted-lists/HC-kang.ts @@ -7,6 +7,11 @@ class ListNode { } } +/** + * https://leetcode.com/problems/merge-two-sorted-lists + * T.C. O(m + n) + * S.C. O(1) + */ function mergeTwoLists( list1: ListNode | null, list2: ListNode | null From 3de0ee0e5824c6a88527703298c17e3f0c2abcb7 Mon Sep 17 00:00:00 2001 From: HC-kang Date: Tue, 1 Oct 2024 23:05:53 +0900 Subject: [PATCH 3/7] Feat: 424. Longest Repeating Character Replacement --- .../HC-kang.ts | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 longest-repeating-character-replacement/HC-kang.ts diff --git a/longest-repeating-character-replacement/HC-kang.ts b/longest-repeating-character-replacement/HC-kang.ts new file mode 100644 index 00000000..d60a0942 --- /dev/null +++ b/longest-repeating-character-replacement/HC-kang.ts @@ -0,0 +1,25 @@ +/** + * https://leetcode.com/problems/longest-repeating-character-replacement + * T.C. O(n) + * S.C. O(1) + */ +function characterReplacement(s: string, k: number): number { + const charCount = new Array(26).fill(0); + let maxCount = 0; + let start = 0; + let maxLen = 0; + + const A = 'A'.charCodeAt(0); + for (let end = 0; end < s.length; end++) { + const endCharIdx = s.charCodeAt(end) - A; + maxCount = Math.max(maxCount, ++charCount[endCharIdx]); + + if (end - start + 1 - maxCount > k) { + charCount[s.charCodeAt(start) - A]--; + start++; + } + + maxLen = Math.max(maxLen, end - start + 1); + } + return maxLen; +} From 42b6fba2471cdc46cdde370823d11a074fd0e086 Mon Sep 17 00:00:00 2001 From: HC-kang Date: Wed, 2 Oct 2024 08:20:29 +0900 Subject: [PATCH 4/7] Feat: 371. Sum of Two Integers --- sum-of-two-integers/HC-kang.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 sum-of-two-integers/HC-kang.ts diff --git a/sum-of-two-integers/HC-kang.ts b/sum-of-two-integers/HC-kang.ts new file mode 100644 index 00000000..260a51af --- /dev/null +++ b/sum-of-two-integers/HC-kang.ts @@ -0,0 +1,13 @@ +/** + * https://leetcode.com/problems/sum-of-two-integers + * T.C. O(log a) + * S.C. O(1) + */ +function getSum(a: number, b: number): number { + while (b != 0) { + let carry = a & b; + a = a ^ b; + b = carry << 1; + } + return a; +} From 7561b4e8fc5bc6b2479c0f7fb29a92cc0254a0fb Mon Sep 17 00:00:00 2001 From: HC-kang Date: Wed, 2 Oct 2024 08:48:27 +0900 Subject: [PATCH 5/7] Feat: 133. Clone Graph --- clone-graph/HC-kang.ts | 63 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 clone-graph/HC-kang.ts diff --git a/clone-graph/HC-kang.ts b/clone-graph/HC-kang.ts new file mode 100644 index 00000000..dbbec3bc --- /dev/null +++ b/clone-graph/HC-kang.ts @@ -0,0 +1,63 @@ +/** + * https://leetcode.com/problems/clone-graph + * T.C. O(N) + * S.C. O(N) + */ +function cloneGraph(node: _Node | null): _Node | null { + if (!node) return null; + + const map = new Map(); + return dfs(node); + + function dfs(node: _Node): _Node { + if (map.has(node.val)) return map.get(node.val)!; + + const newNode = new _Node(node.val); + map.set(node.val, newNode); + + for (let neighbor of node.neighbors) { + newNode.neighbors.push(dfs(neighbor)); + } + + return newNode; + } +} + +/** + * T.C. O(N) + * S.C. O(N) + */ +function cloneGraph(node: _Node | null): _Node | null { + if (!node) return null; + + const map = new Map(); + const stack = [node]; + const newNode = new _Node(node.val); + map.set(node.val, newNode); + + while (stack.length) { + const node = stack.pop()!; + const newNode = map.get(node.val)!; + + for (let neighbor of node.neighbors) { + if (!map.has(neighbor.val)) { + stack.push(neighbor); + const newNeighbor = new _Node(neighbor.val); + map.set(neighbor.val, newNeighbor); + } + newNode.neighbors.push(map.get(neighbor.val)!); + } + } + + return newNode; +} + +class _Node { + val: number; + neighbors: _Node[]; + + constructor(val?: number, neighbors?: _Node[]) { + this.val = val === undefined ? 0 : val; + this.neighbors = neighbors === undefined ? [] : neighbors; + } +} \ No newline at end of file From d5373fdeed1d9ffea1db0d50bf0ff78cf7c729a6 Mon Sep 17 00:00:00 2001 From: HC-kang Date: Wed, 2 Oct 2024 09:13:48 +0900 Subject: [PATCH 6/7] Feat: 1143. Longest Common Subsequence --- longest-common-subsequence/HC-kang.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 longest-common-subsequence/HC-kang.ts diff --git a/longest-common-subsequence/HC-kang.ts b/longest-common-subsequence/HC-kang.ts new file mode 100644 index 00000000..3e3536c4 --- /dev/null +++ b/longest-common-subsequence/HC-kang.ts @@ -0,0 +1,23 @@ +/** + * https://leetcode.com/problems/longest-common-subsequence + * T.C. O(m * n) + * S.C. O(n) + */ +function longestCommonSubsequence(text1: string, text2: string): number { + const dp = Array.from({ length: text2.length + 1 }, () => 0); + + for (let i = 1; i <= text1.length; i++) { + let prev = 0; + for (let j = 1; j <= text2.length; j++) { + const temp = dp[j]; + if (text1[i - 1] === text2[j - 1]) { + dp[j] = prev + 1; + } else { + dp[j] = Math.max(dp[j], dp[j - 1]); + } + prev = temp; + } + } + + return dp[text2.length]; +} From f6904858f2b01bb76fd5044ca2d5a190d441122a Mon Sep 17 00:00:00 2001 From: HC-kang Date: Wed, 2 Oct 2024 09:16:25 +0900 Subject: [PATCH 7/7] Fix: add a line break --- clone-graph/HC-kang.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clone-graph/HC-kang.ts b/clone-graph/HC-kang.ts index dbbec3bc..7a57fcd0 100644 --- a/clone-graph/HC-kang.ts +++ b/clone-graph/HC-kang.ts @@ -60,4 +60,4 @@ class _Node { this.val = val === undefined ? 0 : val; this.neighbors = neighbors === undefined ? [] : neighbors; } -} \ No newline at end of file +}