diff --git a/longest-substring-without-repeating-characters/daehyun99.py b/longest-substring-without-repeating-characters/daehyun99.py new file mode 100644 index 0000000000..50fcaad914 --- /dev/null +++ b/longest-substring-without-repeating-characters/daehyun99.py @@ -0,0 +1,16 @@ +class Solution: + def lengthOfLongestSubstring(self, s: str) -> int: + l = 0 + seen = set() + longest = 0 + + for c in s: + if c not in seen: + seen.add(c) + longest = max(longest, len(seen)) + else: + while c in seen: + seen.remove(s[l]) + l += 1 + seen.add(c) + return longest diff --git a/number-of-islands/daehyun99.py b/number-of-islands/daehyun99.py new file mode 100644 index 0000000000..91d5ff40f7 --- /dev/null +++ b/number-of-islands/daehyun99.py @@ -0,0 +1,26 @@ +# Time: O(M * N) +# Space: O(M * N) +class Solution: + def numIslands(self, grid: List[List[str]]) -> int: + h = len(grid) + w = len(grid[0]) + count = 0 + for i in range(h): + for j in range(w): + if grid[i][j] == "1": + stack = [] + stack.append([i, j]) + while len(stack) > 0 : + x, y = stack.pop() + + grid[x][y] = "0" + if x > 0 and grid[x-1][y] == "1": + stack.append([x-1, y]) + if x + 1 < h and grid[x+1][y] == "1": + stack.append([x+1, y]) + if y > 0 and grid[x][y-1] == "1": + stack.append([x, y-1]) + if y + 1 < w and grid[x][y+1] == "1": + stack.append([x, y+1]) + count += 1 + return count diff --git a/reverse-linked-list/daehyun99.py b/reverse-linked-list/daehyun99.py new file mode 100644 index 0000000000..ffe7b26315 --- /dev/null +++ b/reverse-linked-list/daehyun99.py @@ -0,0 +1,20 @@ +# Definition for singly-linked list. +# class ListNode: +# def __init__(self, val=0, next=None): +# self.val = val +# self.next = next +# Time: O(N) +# Space: O(1) +class Solution: + def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: + if head is None: + return head + pointer = head + left = None + while pointer.next is not None: + right = pointer.next + pointer.next = left + left = pointer + pointer = right + pointer.next = left + return pointer diff --git a/set-matrix-zeroes/daehyun99.py b/set-matrix-zeroes/daehyun99.py new file mode 100644 index 0000000000..a2d0dbf5ec --- /dev/null +++ b/set-matrix-zeroes/daehyun99.py @@ -0,0 +1,22 @@ +class Solution: + def setZeroes(self, matrix: List[List[int]]) -> None: + row = set() + col = set() + + for i in range(len(matrix)): + if 0 in matrix[i]: + row.add(i) + for j in range(len(matrix[0])): + if matrix[i][j] == 0: + col.add(j) + + for i in row: + matrix[i] = [0] * len(matrix[0]) + + for i in range(len(matrix)): + if i in row: + continue + for j in range(len(matrix[0])): + if j in col: + matrix[i][j] = 0 + diff --git a/unique-paths/daehyun99.py b/unique-paths/daehyun99.py new file mode 100644 index 0000000000..d577fd44f2 --- /dev/null +++ b/unique-paths/daehyun99.py @@ -0,0 +1,16 @@ +class Solution: + def uniquePaths(self, m: int, n: int) -> int: + matrix = [[0] * n for _ in range(m)] + matrix[0][0] += 1 + + for x in range(m): + for y in range(n): + if x == 0 and y == 0: + continue + elif x == 0: + matrix[x][y] += matrix[x][y-1] + elif y == 0: + matrix[x][y] += matrix[x-1][y] + else: + matrix[x][y] += (matrix[x][y-1] + matrix[x-1][y]) + return matrix[m-1][n-1]