Skip to content

Commit 0e4b7d0

Browse files
authored
Merge pull request #2330 from 8804who/main
[8804who] WEEK 14 Solutions
2 parents 8760af8 + adffc50 commit 0e4b7d0

4 files changed

Lines changed: 106 additions & 0 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from collections import deque
2+
3+
# Definition for a binary tree node.
4+
# class TreeNode:
5+
# def __init__(self, val=0, left=None, right=None):
6+
# self.val = val
7+
# self.left = left
8+
# self.right = right
9+
class Solution:
10+
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
11+
answer = []
12+
13+
q = deque([(root, 0)])
14+
15+
while q:
16+
node, depth = q.popleft()
17+
if not node:
18+
continue
19+
20+
if len(answer)-1 < depth:
21+
answer.append([])
22+
23+
answer[depth].append(node.val)
24+
25+
q.append((node.left, depth+1))
26+
q.append((node.right, depth+1))
27+
28+
return answer
29+

counting-bits/8804who.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import math
2+
3+
class Solution:
4+
def countBits(self, n: int) -> List[int]:
5+
dp = [0, 1]
6+
num = 1
7+
idx = 2
8+
9+
while idx <= n:
10+
num *= 2
11+
temp = idx+(num//2)
12+
temp2 = temp+(num//2)
13+
14+
for i in range(idx, temp):
15+
dp.append(dp[i-(num//2)])
16+
idx += 1
17+
for i in range(temp,temp2):
18+
dp.append(dp[i-(num//2)]+1)
19+
idx += 1
20+
21+
return dp[:n+1]
22+

house-robber-ii/8804who.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def rob(self, nums: List[int]) -> int:
3+
nums = [0]+nums
4+
dp1 = [0 for _ in range(len(nums))]
5+
dp2 = [0 for _ in range(len(nums))]
6+
7+
dp1[1] = nums[1]
8+
9+
for i in range(2, len(nums)-1):
10+
dp1[i] = max(dp1[i-1], dp1[i-2]+nums[i])
11+
for i in range(2, len(nums)):
12+
dp2[i] = max(dp2[i-1], dp2[i-2]+nums[i])
13+
14+
return max(max(dp1), max(dp2))
15+

word-search-ii/8804who.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class Solution:
2+
def findWords(self, board: List[List[str]], words: List[str]) -> List[str]:
3+
answer = []
4+
trie = {}
5+
moves = [[-1,0],[1,0],[0,-1],[0,1]]
6+
7+
for word in words:
8+
node = trie
9+
for char in word:
10+
if char not in node:
11+
node[char] = {}
12+
node = node[char]
13+
node["$"] = word
14+
15+
def dfs(y, x, node):
16+
if "$" in node:
17+
answer.append(node["$"])
18+
del node["$"]
19+
20+
if 0 > y or y >= len(board) or 0 > x or x >= len(board[0]):
21+
return
22+
23+
if board[y][x] not in node:
24+
return
25+
26+
node = node[board[y][x]]
27+
28+
temp = board[y][x]
29+
board[y][x] = ""
30+
31+
for move in moves:
32+
dfs(y+move[0], x+move[1], node)
33+
board[y][x] = temp
34+
35+
for i in range(len(board)):
36+
for j in range(len(board[0])):
37+
if board[i][j] in trie:
38+
dfs(i,j,trie)
39+
return answer
40+

0 commit comments

Comments
 (0)