diff --git a/longest-substring-without-repeating-characters/parkhojeong.py b/longest-substring-without-repeating-characters/parkhojeong.py new file mode 100644 index 0000000000..a3f74786a9 --- /dev/null +++ b/longest-substring-without-repeating-characters/parkhojeong.py @@ -0,0 +1,22 @@ +class Solution: + def lengthOfLongestSubstring(self, s: str) -> int: + if s == "": + return 0 + + ch_to_idx = {} + start_idx = 0 + + i = 0 + length_of_longest_substring = 1 + for i in range(len(s)): + ch = s[i] + if ch in ch_to_idx and ch_to_idx[ch] >= start_idx: + start_idx = ch_to_idx[ch] + 1 + ch_to_idx[ch] = i + else: + ch_to_idx[ch] = i + length_of_substring = i - start_idx + 1 + length_of_longest_substring = max(length_of_longest_substring, length_of_substring) + + return length_of_longest_substring + diff --git a/number-of-islands/parkhojeong.py b/number-of-islands/parkhojeong.py new file mode 100644 index 0000000000..b6d29e28d4 --- /dev/null +++ b/number-of-islands/parkhojeong.py @@ -0,0 +1,26 @@ +class Solution: + def numIslands(self, grid: List[List[str]]) -> int: + row_len = len(grid) + col_len = len(grid[0]) + + def dfs(row: int, col: int): + if not (0 <= row < row_len and 0 <= col < col_len): + return + + if grid[row][col] == "0": + return + + grid[row][col] = "0" + dfs(row - 1, col) + dfs(row + 1, col) + dfs(row, col - 1) + dfs(row, col + 1) + + num_islands = 0 + for row in range(row_len): + for col in range(col_len): + if grid[row][col] == "1": + num_islands += 1 + dfs(row, col) + + return num_islands diff --git a/reverse-linked-list/parkhojeong.py b/reverse-linked-list/parkhojeong.py new file mode 100644 index 0000000000..6862645954 --- /dev/null +++ b/reverse-linked-list/parkhojeong.py @@ -0,0 +1,16 @@ +# Definition for singly-linked list. +# class ListNode: +# def __init__(self, val=0, next=None): +# self.val = val +# self.next = next +class Solution: + def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: + prev_node, cur_node = None, head + + while cur_node: + next_node = cur_node.next + + cur_node.next = prev_node + prev_node, cur_node = cur_node, next_node + + return prev_node diff --git a/set-matrix-zeroes/parkhojeong.py b/set-matrix-zeroes/parkhojeong.py new file mode 100644 index 0000000000..0ff8955aec --- /dev/null +++ b/set-matrix-zeroes/parkhojeong.py @@ -0,0 +1,23 @@ +class Solution: + def setZeroes(self, matrix: List[List[int]]) -> None: + """ + Do not return anything, modify matrix in-place instead. + """ + + row_len = len(matrix) + col_len = len(matrix[0]) + + zero_row_set = set() + zero_col_set = set() + + for r in range(row_len): + for c in range(col_len): + if matrix[r][c] == 0: + zero_row_set.add(r) + zero_col_set.add(c) + + for r in range(row_len): + for c in range(col_len): + if r in zero_row_set or c in zero_col_set: + matrix[r][c] = 0 + diff --git a/unique-paths/parkhojeong.py b/unique-paths/parkhojeong.py new file mode 100644 index 0000000000..87cd9a4a32 --- /dev/null +++ b/unique-paths/parkhojeong.py @@ -0,0 +1,10 @@ +class Solution: + def uniquePaths(self, m: int, n: int) -> int: + column = [1] * m + + for col in range(n - 1): + + for row in range(1, m): + column[row] = column[row] + column[row - 1] + + return column[-1]