Skip to content

Commit bee194f

Browse files
authored
Improved tasks 41-102
1 parent 314fc93 commit bee194f

File tree

27 files changed

+148
-168
lines changed

27 files changed

+148
-168
lines changed

README.md

Lines changed: 102 additions & 102 deletions
Large diffs are not rendered by default.

src/main/ts/g0001_0100/s0041_first_missing_positive/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// #Hard #Top_100_Liked_Questions #Top_Interview_Questions #Array #Hash_Table #Udemy_Arrays
2-
// #Big_O_Time_O(n)_Space_O(n) #2023_09_29_Time_55_ms_(98.51%)_Space_49.8_MB_(60.20%)
2+
// #Big_O_Time_O(n)_Space_O(n) #2025_03_23_Time_1_ms_(99.11%)_Space_65.96_MB_(40.18%)
33

44
function firstMissingPositive(nums: number[]): number {
55
let i = 0

src/main/ts/g0001_0100/s0042_trapping_rain_water/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Hard #Top_100_Liked_Questions #Top_Interview_Questions #Array #Dynamic_Programming #Two_Pointers
22
// #Stack #Monotonic_Stack #Dynamic_Programming_I_Day_9 #Udemy_Two_Pointers
33
// #Top_Interview_150_Array/String #Big_O_Time_O(n)_Space_O(1)
4-
// #2023_09_30_Time_46_ms_(99.52%)_Space_44.4_MB_(97.58%)
4+
// #2025_03_23_Time_0_ms_(100.00%)_Space_57.78_MB_(55.13%)
55

66
function trap(height: number[]): number {
77
let result = 0
Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,23 @@
11
// #Medium #Top_100_Liked_Questions #Array #Dynamic_Programming #Greedy
22
// #Algorithm_II_Day_13_Dynamic_Programming #Dynamic_Programming_I_Day_4
33
// #Top_Interview_150_Array/String #Big_O_Time_O(n)_Space_O(1)
4-
// #2023_09_30_Time_50_ms_(95.93%)_Space_44.9_MB_(65.88%)
4+
// #2025_03_23_Time_1_ms_(84.27%)_Space_58.46_MB_(28.93%)
55

6-
function jump(nums: number[]): number { //NOSONAR
7-
let minJmp = new Array(nums.length)
8-
if (nums.length === 1) return 0
9-
let prevIndex = 0
10-
minJmp[prevIndex] = 0
11-
while (prevIndex < nums.length - 1) {
12-
let nextMaxJmpTo = nums[prevIndex] + prevIndex
13-
let prevIndexJmp = minJmp[prevIndex]
6+
function jump(nums: number[]): number {
7+
let minJump = 0,
8+
farthest = 0,
9+
currentEnd = 0
10+
for (let i = 0; i < nums.length - 1; i++) {
11+
farthest = Math.max(farthest, i + nums[i])
12+
// If we've reached the end of the current jump range
13+
if (i === currentEnd) {
14+
minJump++
15+
currentEnd = farthest
1416

15-
let farthestJumpVal = -1
16-
let farthestJumpIndex = -1
17-
for (let i = nextMaxJmpTo; ; i--) {
18-
if (i >= nums.length) {
19-
continue
20-
}
21-
if (i === nums.length - 1) {
22-
return prevIndexJmp + 1
23-
}
24-
if (minJmp[i] != undefined) {
25-
break
26-
}
27-
minJmp[i] = prevIndexJmp + 1
28-
let curmaxTo = nums[i] + i
29-
if (farthestJumpVal < curmaxTo) {
30-
farthestJumpVal = curmaxTo
31-
farthestJumpIndex = i
32-
}
17+
if (currentEnd >= nums.length - 1) break
3318
}
34-
if (farthestJumpIndex === -1) {
35-
return -1
36-
}
37-
prevIndex = farthestJumpIndex
3819
}
39-
return minJmp[nums.length - 1]
20+
return minJump
4021
}
4122

4223
export { jump }

src/main/ts/g0001_0100/s0046_permutations/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Backtracking
22
// #Algorithm_I_Day_11_Recursion_Backtracking #Level_2_Day_20_Brute_Force/Backtracking
33
// #Udemy_Backtracking/Recursion #Top_Interview_150_Backtracking #Big_O_Time_O(n*n!)_Space_O(n+n!)
4-
// #2023_09_30_Time_56_ms_(96.26%)_Space_45.7_MB_(55.35%)
4+
// #2025_03_23_Time_1_ms_(84.44%)_Space_60.84_MB_(26.93%)
55

66
function permute(nums: number[]): number[][] {
77
const result: number[][] = []

src/main/ts/g0001_0100/s0048_rotate_image/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Math #Matrix
22
// #Data_Structure_II_Day_3_Array #Programming_Skills_II_Day_7 #Udemy_2D_Arrays/Matrix
33
// #Top_Interview_150_Matrix #Big_O_Time_O(n^2)_Space_O(1)
4-
// #2023_09_30_Time_45_ms_(95.31%)_Space_44.4_MB_(48.24%)
4+
// #2025_03_23_Time_0_ms_(100.00%)_Space_57.37_MB_(17.79%)
55

66
/*
77
Do not return anything, modify matrix in-place instead.

src/main/ts/g0001_0100/s0049_group_anagrams/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #String #Hash_Table #Sorting
22
// #Data_Structure_II_Day_8_String #Programming_Skills_II_Day_11 #Udemy_Strings
33
// #Top_Interview_150_Hashmap #Big_O_Time_O(n*k_log_k)_Space_O(n)
4-
// #2023_09_30_Time_93_ms_(97.29%)_Space_52_MB_(99.08%)
4+
// #2025_03_23_Time_27_ms_(78.99%)_Space_68.93_MB_(28.40%)
55

66
function groupAnagrams(strs: string[]): string[][] {
77
if (strs.length === 1) return [strs]

src/main/ts/g0001_0100/s0051_n_queens/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// #Hard #Top_100_Liked_Questions #Array #Backtracking #Big_O_Time_O(N!)_Space_O(N)
2-
// #2023_09_30_Time_57_ms_(93.84%)_Space_45_MB_(83.56%)
2+
// #2025_03_23_Time_6_ms_(95.85%)_Space_59.90_MB_(33.61%)
33

44
function solveNQueens(n: number): string[][] {
55
const result: string[][] = []

src/main/ts/g0001_0100/s0053_maximum_subarray/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Dynamic_Programming
22
// #Divide_and_Conquer #Data_Structure_I_Day_1_Array #Dynamic_Programming_I_Day_5
33
// #Udemy_Famous_Algorithm #Top_Interview_150_Kadane's_Algorithm #Big_O_Time_O(n)_Space_O(1)
4-
// #2023_09_30_Time_66_ms_(90.36%)_Space_51.9_MB_(80.92%)
4+
// #2025_03_23_Time_0_ms_(100.00%)_Space_65.50_MB_(44.96%)
55

66
function maxSubArray(nums: number[]): number {
77
let curSum: number = nums[0]

src/main/ts/g0001_0100/s0055_jump_game/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Dynamic_Programming #Greedy
22
// #Algorithm_II_Day_12_Dynamic_Programming #Dynamic_Programming_I_Day_4 #Udemy_Arrays
33
// #Top_Interview_150_Array/String #Big_O_Time_O(n)_Space_O(1)
4-
// #2023_09_30_Time_58_ms_(91.95%)_Space_47.4_MB_(70.79%)
4+
// #2025_03_23_Time_0_ms_(100.00%)_Space_59.92_MB_(51.18%)
55

66
function canJump(nums: number[]): boolean {
77
let availableSteps = nums[0]

src/main/ts/g0001_0100/s0056_merge_intervals/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Sorting
22
// #Data_Structure_II_Day_2_Array #Level_2_Day_17_Interval #Udemy_2D_Arrays/Matrix
33
// #Top_Interview_150_Intervals #Big_O_Time_O(n_log_n)_Space_O(n)
4-
// #2023_10_01_Time_84_ms_(92.06%)_Space_49.9_MB_(69.16%)
4+
// #2025_03_23_Time_7_ms_(87.99%)_Space_66.00_MB_(36.16%)
55

66
function merge(intervals: number[][]): number[][] {
77
let result = []
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Dynamic_Programming #Math
22
// #Combinatorics #Algorithm_II_Day_13_Dynamic_Programming #Dynamic_Programming_I_Day_15
33
// #Level_1_Day_11_Dynamic_Programming #Big_O_Time_O(m*n)_Space_O(m*n)
4-
// #2023_10_01_Time_40_ms_(98.97%)_Space_42.8_MB_(72.52%)
4+
// #2025_03_23_Time_0_ms_(100.00%)_Space_55.15_MB_(43.54%)
55

66
function uniquePaths(m: number, n: number): number {
7-
const factorialize = (x: number) => {
8-
if (x <= 1) return 1
9-
let res = x
10-
while (x > 1) {
11-
x--
12-
res *= x
7+
let aboveRow = Array(n).fill(1)
8+
for (let row = 1; row < m; row++) {
9+
let currentRow = Array(n).fill(1)
10+
for (let col = 1; col < n; col++) {
11+
currentRow[col] = currentRow[col - 1] + aboveRow[col]
1312
}
14-
return res
13+
aboveRow = currentRow
1514
}
16-
return factorialize(m + n - 2) / factorialize(m - 1) / factorialize(n - 1)
15+
return aboveRow[n - 1]
1716
}
1817

1918
export { uniquePaths }

src/main/ts/g0001_0100/s0064_minimum_path_sum/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// #Medium #Top_100_Liked_Questions #Array #Dynamic_Programming #Matrix
22
// #Dynamic_Programming_I_Day_16 #Udemy_Dynamic_Programming #Top_Interview_150_Multidimensional_DP
3-
// #Big_O_Time_O(m*n)_Space_O(m*n) #2023_10_01_Time_48_ms_(99.67%)_Space_44.5_MB_(90.16%)
3+
// #Big_O_Time_O(m*n)_Space_O(m*n) #2025_03_23_Time_4_ms_(70.73%)_Space_59.31_MB_(26.29%)
44

55
function minPathSum(grid: number[][]): number {
66
let [m, n] = [grid.length, grid[0].length]

src/main/ts/g0001_0100/s0070_climbing_stairs/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #Dynamic_Programming #Math #Memoization
22
// #Algorithm_I_Day_12_Dynamic_Programming #Dynamic_Programming_I_Day_2
33
// #Level_1_Day_10_Dynamic_Programming #Udemy_Dynamic_Programming #Top_Interview_150_1D_DP
4-
// #Big_O_Time_O(n)_Space_O(n) #2023_10_01_Time_44_ms_(94.58%)_Space_42.4_MB_(73.09%)
4+
// #Big_O_Time_O(n)_Space_O(n) #2025_03_23_Time_0_ms_(100.00%)_Space_56.23_MB_(5.15%)
55

66
function climbStairs(n: number, memo: Record<string, number> = {}): number {
77
if (n in memo) return memo[n]

src/main/ts/g0001_0100/s0072_edit_distance/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Medium #Top_100_Liked_Questions #String #Dynamic_Programming
22
// #Algorithm_II_Day_18_Dynamic_Programming #Dynamic_Programming_I_Day_19
33
// #Udemy_Dynamic_Programming #Top_Interview_150_Multidimensional_DP #Big_O_Time_O(n^2)_Space_O(n2)
4-
// #2025_02_15_Time_9_ms_(93.59%)_Space_57.68_MB_(49.82%)
4+
// #2025_03_23_Time_6_ms_(93.83%)_Space_61.09_MB_(45.68%)
55

66
function minDistance(word1: string, word2: string): number {
77
const memo: number[][] = new Array(word1.length + 1).fill(0).map((_) => [])

src/main/ts/g0001_0100/s0073_set_matrix_zeroes/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Hash_Table #Matrix
22
// #Udemy_2D_Arrays/Matrix #Top_Interview_150_Matrix #Big_O_Time_O(m*n)_Space_O(1)
3-
// #2023_10_01_Time_61_ms_(97.66%)_Space_45.9_MB_(30.73%)
3+
// #2025_03_23_Time_4_ms_(50.63%)_Space_61.42_MB_(6.15%)
44

55
/*
66
Do not return anything, modify matrix in-place instead.

src/main/ts/g0001_0100/s0074_search_a_2d_matrix/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Medium #Top_100_Liked_Questions #Array #Binary_Search #Matrix #Data_Structure_I_Day_5_Array
22
// #Algorithm_II_Day_1_Binary_Search #Binary_Search_I_Day_8 #Level_2_Day_8_Binary_Search
33
// #Udemy_2D_Arrays/Matrix #Top_Interview_150_Binary_Search #Big_O_Time_O(endRow+endCol)_Space_O(1)
4-
// #2023_10_01_Time_45_ms_(96.82%)_Space_44.3_MB_(43.77%)
4+
// #2025_03_23_Time_0_ms_(100.00%)_Space_54.50_MB_(46.86%)
55

66
function searchMatrix(matrix: number[][], target: number): boolean {
77
const [m, n] = [matrix.length, matrix[0].length]

src/main/ts/g0001_0100/s0075_sort_colors/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Sorting #Two_Pointers
22
// #Data_Structure_II_Day_2_Array #Udemy_Arrays #Big_O_Time_O(n)_Space_O(1)
3-
// #2023_10_02_Time_43_ms_(97.41%)_Space_42.5_MB_(85.34%)
3+
// #2025_03_23_Time_0_ms_(100.00%)_Space_56.04_MB_(26.80%)
44

55
const sortColors = (nums: number[]) => {
66
let i = 0

src/main/ts/g0001_0100/s0076_minimum_window_substring/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// #Hard #Top_100_Liked_Questions #Top_Interview_Questions #String #Hash_Table #Sliding_Window
22
// #Level_2_Day_14_Sliding_Window/Two_Pointer #Top_Interview_150_Sliding_Window
3-
// #Big_O_Time_O(s.length())_Space_O(1) #2023_10_02_Time_82_ms_(82.17%)_Space_46.2_MB_(81.89%)
3+
// #Big_O_Time_O(s.length())_Space_O(1) #2025_03_23_Time_20_ms_(90.35%)_Space_58.72_MB_(57.91%)
44

55
function minWindow(s: string, t: string): string { //NOSONAR
66
const map: Map<string, number> = new Map()

src/main/ts/g0001_0100/s0078_subsets/solution.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Bit_Manipulation #Backtracking
22
// #Algorithm_II_Day_9_Recursion_Backtracking #Udemy_Backtracking/Recursion
3-
// #Big_O_Time_O(2^n)_Space_O(n*2^n) #2023_10_02_Time_50_ms_(94.61%)_Space_44.8_MB_(75.83%)
3+
// #Big_O_Time_O(2^n)_Space_O(n*2^n) #2025_03_23_Time_0_ms_(100.00%)_Space_58.49_MB_(41.68%)
44

5-
const subsets = (nums: number[]): number[][] => {
5+
function subsets(nums: number[]): number[][] {
66
const sets: number[][] = [[]]
77
for (const num of nums) sets.push(...sets.map((set) => [...set, num]))
88
return sets

src/main/ts/g0001_0100/s0079_word_search/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Matrix #Backtracking
22
// #Algorithm_II_Day_11_Recursion_Backtracking #Top_Interview_150_Backtracking
3-
// #Big_O_Time_O(4^(m*n))_Space_O(m*n) #2023_10_03_Time_327_ms_(95.78%)_Space_43.4_MB_(84.98%)
3+
// #Big_O_Time_O(4^(m*n))_Space_O(m*n) #2025_03_23_Time_243_ms_(85.30%)_Space_56.58_MB_(58.26%)
44

55
function exist(board: string[][], word: string): boolean {
66
if (word.length === 0) return false

src/main/ts/g0001_0100/s0084_largest_rectangle_in_histogram/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// #Hard #Top_100_Liked_Questions #Top_Interview_Questions #Array #Stack #Monotonic_Stack
2-
// #Big_O_Time_O(n_log_n)_Space_O(log_n) #2023_10_03_Time_78_ms_(92.44%)_Space_56.8_MB_(85.29%)
2+
// #Big_O_Time_O(n_log_n)_Space_O(log_n) #2025_03_23_Time_15_ms_(72.81%)_Space_72.66_MB_(37.28%)
33

44
function largestRectangleArea(heights: number[]): number {
55
let stack = []

src/main/ts/g0001_0100/s0094_binary_tree_inorder_traversal/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #Depth_First_Search #Tree #Binary_Tree
22
// #Stack #Data_Structure_I_Day_10_Tree #Udemy_Tree_Stack_Queue #Big_O_Time_O(n)_Space_O(n)
3-
// #2023_10_03_Time_45_ms_(97.30%)_Space_42.9_MB_(96.73%)
3+
// #2025_03_23_Time_0_ms_(100.00%)_Space_54.69_MB_(46.13%)
44

55
import { TreeNode } from '../../com_github_leetcode/treenode'
66

src/main/ts/g0001_0100/s0096_unique_binary_search_trees/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// #Medium #Dynamic_Programming #Math #Tree #Binary_Tree #Binary_Search_Tree
22
// #Dynamic_Programming_I_Day_11 #Big_O_Time_O(n)_Space_O(1)
3-
// #2023_10_03_Time_45_ms_(96.00%)_Space_42.9_MB_(25.33%)
3+
// #2025_03_23_Time_0_ms_(100.00%)_Space_55.21_MB_(33.33%)
44

55
function numTrees(n: number): number {
66
const uniqueCount = new Array(n + 1).fill(0)

src/main/ts/g0001_0100/s0098_validate_binary_search_tree/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Depth_First_Search #Tree #Binary_Tree
22
// #Binary_Search_Tree #Data_Structure_I_Day_14_Tree #Level_1_Day_8_Binary_Search_Tree
33
// #Udemy_Tree_Stack_Queue #Top_Interview_150_Binary_Search_Tree #Big_O_Time_O(N)_Space_O(log(N))
4-
// #2023_10_03_Time_51_ms_(98.35%)_Space_47.3_MB_(61.68%)
4+
// #2025_03_23_Time_0_ms_(100.00%)_Space_60.76_MB_(21.74%)
55

66
import { TreeNode } from '../../com_github_leetcode/treenode'
77

src/main/ts/g0101_0200/s0101_symmetric_tree/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #Depth_First_Search #Breadth_First_Search
22
// #Tree #Binary_Tree #Data_Structure_I_Day_11_Tree #Level_2_Day_15_Tree
33
// #Top_Interview_150_Binary_Tree_General #Big_O_Time_O(N)_Space_O(log(N))
4-
// #2023_10_04_Time_49_ms_(98.54%)_Space_45_MB_(59.02%)
4+
// #2025_03_23_Time_0_ms_(100.00%)_Space_58.35_MB_(25.66%)
55

66
import { TreeNode } from '../../com_github_leetcode/treenode'
77

src/main/ts/g0101_0200/s0102_binary_tree_level_order_traversal/solution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Breadth_First_Search #Tree
22
// #Binary_Tree #Data_Structure_I_Day_11_Tree #Level_1_Day_6_Tree #Udemy_Tree_Stack_Queue
33
// #Top_Interview_150_Binary_Tree_BFS #Big_O_Time_O(N)_Space_O(N)
4-
// #2023_10_04_Time_60_ms_(97.47%)_Space_47_MB_(77.89%)
4+
// #2025_03_23_Time_0_ms_(100.00%)_Space_59.70_MB_(51.83%)
55

66
import { TreeNode } from '../../com_github_leetcode/treenode'
77

0 commit comments

Comments
 (0)