Skip to content

Commit a1e1881

Browse files
authored
Merge pull request #2346 from 8804who/main
[8804who] WEEK 15 solutions
2 parents aec763f + 3f74675 commit a1e1881

File tree

4 files changed

+104
-0
lines changed

4 files changed

+104
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution:
8+
def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
9+
inorder_idx = {val:idx for idx, val in enumerate(inorder) }
10+
preorder_iter = iter(preorder)
11+
12+
def dfs(start, end):
13+
if start > end:
14+
return None
15+
16+
val = next(preorder_iter)
17+
mid = inorder_idx[val]
18+
19+
return TreeNode(val, dfs(start, mid-1), dfs(mid+1, end))
20+
21+
return dfs(0, len(preorder)-1)
22+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution:
2+
def longestPalindrome(self, s: str) -> str:
3+
answer = ""
4+
for i in range(len(s)):
5+
dist = 0
6+
temp = ""
7+
while i-dist >= 0 and i+dist < len(s):
8+
if s[i-dist] == s[i+dist]:
9+
temp = s[i-dist:i+dist+1]
10+
dist+=1
11+
else:
12+
break
13+
if len(temp) > len(answer):
14+
answer = temp
15+
if i+1 < len(s):
16+
if s[i] != s[i+1]:
17+
continue
18+
dist = 0
19+
while i-dist >= 0 and i+1+dist < len(s):
20+
if s[i-dist] == s[i+1+dist]:
21+
temp = s[i-dist:i+dist+2]
22+
dist+=1
23+
else:
24+
break
25+
if len(temp) > len(answer):
26+
answer = temp
27+
return answer
28+

rotate-image/8804who.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from collections import deque
2+
3+
class Solution:
4+
def rotate(self, matrix: List[List[int]]) -> None:
5+
"""
6+
Do not return anything, modify matrix in-place instead.
7+
"""
8+
9+
def sub(s, e):
10+
q = deque()
11+
12+
for i in range(s, e+1):
13+
q.append(matrix[s][i])
14+
for i in range(s+1, e+1):
15+
q.append(matrix[i][e])
16+
for i in range(e-1, s-1, -1):
17+
q.append(matrix[e][i])
18+
for i in range(e-1, s, -1):
19+
q.append(matrix[i][s])
20+
21+
for _ in range(e-s):
22+
q.appendleft(q.pop())
23+
24+
for i in range(s, e+1):
25+
matrix[s][i] = q.popleft()
26+
for i in range(s+1, e+1):
27+
matrix[i][e] = q.popleft()
28+
for i in range(e-1, s-1, -1):
29+
matrix[e][i] = q.popleft()
30+
for i in range(e-1, s, -1):
31+
matrix[i][s] = q.popleft()
32+
33+
if s+1 <= e-1:
34+
sub(s+1, e-1)
35+
36+
sub(0, len(matrix)-1)
37+

subtree-of-another-tree/8804who.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution:
8+
def isSubtree(self, root: Optional[TreeNode], subRoot: Optional[TreeNode]) -> bool:
9+
def getTreeNodes(node):
10+
if not node:
11+
return "#"
12+
13+
return ":"+str(node.val)+":"+getTreeNodes(node.left)+getTreeNodes(node.right)
14+
15+
16+
return getTreeNodes(subRoot) in getTreeNodes(root)
17+

0 commit comments

Comments
 (0)