Skip to content

Commit 63b996b

Browse files
authored
Merge pull request #355 from kjb512/main
[kayden] Week 02 Solutions
2 parents 849ad6f + 713cfed commit 63b996b

File tree

5 files changed

+111
-0
lines changed

5 files changed

+111
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# 시간복잡도: O(N)
2+
# 공간복잡도: O(N)
3+
class TreeNode:
4+
def __init__(self, val=0, left=None, right=None):
5+
self.val = val
6+
self.left = left
7+
self.right = right
8+
9+
10+
class Solution:
11+
def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
12+
13+
mapping = {}
14+
15+
for i in range(len(inorder)):
16+
mapping[inorder[i]] = i
17+
18+
preorder = collections.deque(preorder)
19+
20+
def build(start, end):
21+
if start > end: return None
22+
23+
root = TreeNode(preorder.popleft())
24+
mid = mapping[root.val]
25+
26+
root.left = build(start, mid - 1)
27+
root.right = build(mid + 1, end)
28+
29+
return root
30+
31+
return build(0, len(preorder) - 1)

counting-bits/kayden.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# 시간복잡도: O(N)
2+
# 공간복잡도: O(N)
3+
class Solution:
4+
5+
def countBits(self, n: int) -> List[int]:
6+
ans = [0 for _ in range(n + 1)]
7+
for num in range(1, n + 1):
8+
ans[num] = ans[num >> 1] + (num & 1)
9+
10+
return ans

decode-ways/kayden.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# 시간복잡도: O(N)
2+
# 공간복잡도: O(N)
3+
class Solution:
4+
def numDecodings(self, s: str) -> int:
5+
if s[0] == "0":
6+
return 0
7+
8+
n = len(s)
9+
dp = [0] * (n + 1)
10+
dp[0] = 1
11+
dp[1] = 1
12+
13+
for i in range(2, n + 1):
14+
15+
if int(s[i - 1]) != 0:
16+
dp[i] += dp[i - 1]
17+
18+
if 10 <= int(s[i - 2:i]) <= 26:
19+
dp[i] += dp[i - 2]
20+
21+
return dp[n]
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution:
2+
3+
# 시간복잡도: O(N)
4+
# 공간복잡도: O(1)
5+
def encode(self, strs):
6+
res = ""
7+
for str in strs:
8+
size = len(str)
9+
res += str(size)
10+
res += str
11+
12+
return res
13+
14+
# 시간복잡도: O(N)
15+
# 공간복잡도: O(N)
16+
def decode(self, str):
17+
idx = 0
18+
limit = len(str)
19+
res = []
20+
21+
while idx < limit:
22+
num = str[idx]
23+
text = ""
24+
for _ in range(num):
25+
text += str[idx]
26+
idx+=1
27+
res.append(text)
28+
29+
return res

valid-anagram/kayden.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# 시간복잡도: O(N)
2+
# 공간복잡도: O(N)
3+
class Solution:
4+
def isAnagram(self, s: str, t: str) -> bool:
5+
if len(s) != len(t):
6+
return False
7+
8+
counter_s = {}
9+
for letter in s:
10+
counter_s[letter] = counter_s.get(letter, 0) + 1
11+
12+
counter_t = {}
13+
for letter in t:
14+
counter_t[letter] = counter_t.get(letter, 0) + 1
15+
16+
for letter, cnt in counter_s.items():
17+
if counter_t.get(letter, 0) != cnt:
18+
return False
19+
20+
return True

0 commit comments

Comments
 (0)