From 9879785544db455e55ff4d66cada9c6e5b69d5cc Mon Sep 17 00:00:00 2001 From: Jeehay28 Date: Mon, 9 Jun 2025 11:53:08 +0900 Subject: [PATCH 1/4] Add missing-number solution in TS --- missing-number/Jeehay28.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 missing-number/Jeehay28.ts diff --git a/missing-number/Jeehay28.ts b/missing-number/Jeehay28.ts new file mode 100644 index 000000000..a1524599b --- /dev/null +++ b/missing-number/Jeehay28.ts @@ -0,0 +1,30 @@ +// TC: O(n) +// SC: O(1) +function missingNumber(nums: number[]): number { + // 0, 1, 2, 3 => n * (n + 1) / 2 + + let sum = (nums.length * (nums.length + 1)) / 2; + + for (const num of nums) { + sum -= num; + } + + return sum; +} + + +// TC: O(n) +// SC: (1) +// function missingNumber(nums: number[]): number { +// let xor = 0; + +// for (let i = 0; i <= nums.length; i++) { +// xor ^= i; +// } + +// for (const num of nums) { +// xor ^= num; +// } + +// return xor; +// } From 9552cd9545960d58ef72f5fb50c2e807e611df7c Mon Sep 17 00:00:00 2001 From: Jeehay28 Date: Tue, 10 Jun 2025 17:25:50 +0900 Subject: [PATCH 2/4] Add reorder-list solution in TS --- reorder-list/Jeehay28.ts | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 reorder-list/Jeehay28.ts diff --git a/reorder-list/Jeehay28.ts b/reorder-list/Jeehay28.ts new file mode 100644 index 000000000..337d1aa8b --- /dev/null +++ b/reorder-list/Jeehay28.ts @@ -0,0 +1,36 @@ +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; + } +} + +/** + Do not return anything, modify head in-place instead. + */ + +// TC: O(n) +// SC: O(n) +function reorderList(head: ListNode | null): void { + const nodes: ListNode[] = []; + + while (head) { + nodes.push(head); + head = head.next; + } + + let start = 0; + let end = nodes.length - 1; + + while (start < end) { + nodes[start].next = nodes[end]; + start++; + if (start === end) break; + nodes[end].next = nodes[start]; + end--; + } + + nodes[start].next = null; +} From 58cac9ce9b5afdb60a733771ca14dd566c626c6a Mon Sep 17 00:00:00 2001 From: Jeehay28 Date: Wed, 11 Jun 2025 10:27:27 +0900 Subject: [PATCH 3/4] Add merge-intervals solution in TS --- merge-intervals/Jeehay28.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 merge-intervals/Jeehay28.ts diff --git a/merge-intervals/Jeehay28.ts b/merge-intervals/Jeehay28.ts new file mode 100644 index 000000000..7e2ef5485 --- /dev/null +++ b/merge-intervals/Jeehay28.ts @@ -0,0 +1,22 @@ +// TC: O(n * log n) +// SC: O(n) +function merge(intervals: number[][]): number[][] { + if (intervals.length === 0) return []; + + intervals.sort((a, b) => a[0] - b[0]); + + const merged = [intervals[0]]; + + for (let i = 1; i < intervals.length; i++) { + const last = merged[merged.length - 1]; + const current = intervals[i]; + + if (current[0] <= last[1]) { + last[1] = Math.max(last[1], current[1]); + } else { + merged.push(intervals[i]); + } + } + + return merged; +} From 42e321e87870edbe70ae9798729013eb3fbc9af9 Mon Sep 17 00:00:00 2001 From: Jeehay28 Date: Thu, 12 Jun 2025 14:03:47 +0900 Subject: [PATCH 4/4] Add binary-tree-maximum-path-sum solution in TS --- binary-tree-maximum-path-sum/Jeehay28.ts | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 binary-tree-maximum-path-sum/Jeehay28.ts diff --git a/binary-tree-maximum-path-sum/Jeehay28.ts b/binary-tree-maximum-path-sum/Jeehay28.ts new file mode 100644 index 000000000..63df7249c --- /dev/null +++ b/binary-tree-maximum-path-sum/Jeehay28.ts @@ -0,0 +1,30 @@ +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; + } +} + +// TC: O(n) +// SC: O(n) +function maxPathSum(root: TreeNode | null): number { + let maxSum = -Infinity; + + const dfs = (node: TreeNode | null) => { + if (!node) return 0; + + const leftMax = Math.max(dfs(node.left), 0); + const rightMax = Math.max(dfs(node.right), 0); + + maxSum = Math.max(node.val + leftMax + rightMax, maxSum); + + return node.val + Math.max(leftMax, rightMax); + }; + + dfs(root); + return maxSum; +}