Skip to content

Commit 2f399bf

Browse files
authored
Merge pull request #952 from Jeldo/main
[jeldo] Week 7
2 parents f9094b8 + 5f2019f commit 2f399bf

File tree

5 files changed

+79
-0
lines changed

5 files changed

+79
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
# O(n), n = len(s)
3+
def lengthOfLongestSubstring(self, s: str) -> int:
4+
max_len = 0
5+
chars = dict()
6+
l = 0
7+
for r in range(len(s)):
8+
if s[r] not in chars or chars[s[r]] < l:
9+
chars[s[r]] = r
10+
max_len = max(max_len, r - l + 1)
11+
else:
12+
l = chars[s[r]] + 1
13+
chars[s[r]] = r
14+
return max_len

number-of-islands/jeldo.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution:
2+
# O(m*n), m = len(grid), n = len(grid[0])
3+
def numgrids(self, grid: list[list[str]]) -> int:
4+
def dfs(i, j):
5+
if not (0 <= i < len(grid) and 0 <= j < len(grid[0])):
6+
return
7+
if grid[i][j] == "-1" or grid[i][j] == "0":
8+
return
9+
grid[i][j] = "-1"
10+
for d in dirs:
11+
dfs(i + d[0], j + d[1])
12+
dirs = [(0, 1), (1, 0), (0, -1), (-1, 0)]
13+
count = 0
14+
for i in range(len(grid)):
15+
for j in range(len(grid[0])):
16+
if grid[i][j] == "1":
17+
count += 1
18+
dfs(i, j)
19+
return count

reverse-linked-list/jeldo.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Definition for singly-linked list.
2+
# class ListNode:
3+
# def __init__(self, val=0, next=None):
4+
# self.val = val
5+
# self.next = next
6+
class Solution:
7+
# O(n), n = len(nodes)
8+
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
9+
tail = None
10+
while head:
11+
temp = head.next
12+
head.next = tail
13+
tail = head
14+
head = temp
15+
return tail

set-matrix-zeroes/jeldo.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution:
2+
# Time: O(m*n), m = len(matrix), len(matrix[0])
3+
# Space: O(m+n)
4+
def setZeroes(self, matrix: list[list[int]]) -> None:
5+
"""
6+
Do not return anything, modify matrix in-place instead.
7+
"""
8+
row_zeros, col_zeros = set(), set()
9+
for i in range(len(matrix)):
10+
for j in range(len(matrix[0])):
11+
if matrix[i][j] == 0:
12+
row_zeros.add(i)
13+
col_zeros.add(j)
14+
for r in row_zeros:
15+
for j in range(len(matrix[0])):
16+
matrix[r][j] = 0
17+
for c in col_zeros:
18+
for i in range(len(matrix)):
19+
matrix[i][c] = 0

unique-paths/jeldo.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
# O(m*n)
3+
def uniquePaths(self, m: int, n: int) -> int:
4+
dp = [[0]*n for _ in range(m)]
5+
for i in range(m):
6+
dp[i][0] = 1
7+
for i in range(n):
8+
dp[0][i] = 1
9+
for i in range(1, m):
10+
for j in range(1, n):
11+
dp[i][j] += dp[i-1][j] + dp[i][j-1]
12+
return dp[-1][-1]

0 commit comments

Comments
 (0)