File tree 4 files changed +151
-0
lines changed
binary-tree-level-order-traversal
4 files changed +151
-0
lines changed Original file line number Diff line number Diff line change
1
+ """
2
+ Constraints:
3
+ - The number of nodes in the tree is in the range [0, 2000].
4
+ - -1000 <= Node.val <= 1000
5
+
6
+ Time Complexity: O(n)
7
+ - κ° λ
Έλλ₯Ό ν λ²μ©λ§ λ°©λ¬Έν¨
8
+
9
+ Space Complexity: O(n)
10
+ - κ²°κ³Ό 리μ€νΈλ λͺ¨λ λ
Έλμ κ°μ μ μ₯ν¨
11
+
12
+ νμ΄λ°©λ²:
13
+ 1. queueμ BFSλ₯Ό νμ©νμ¬ λ 벨 μμλ‘ λ
Έλλ₯Ό μν
14
+ 2. κ° λ 벨μ λ
Έλλ€μ λ³λμ 리μ€νΈλ‘ λͺ¨μμ κ²°κ³Όμ μΆκ°
15
+ 3. κ° λ
Έλλ₯Ό μ²λ¦¬ν λ κ·Έ λ
Έλμ μμλ€μ νμ μΆκ°νμ¬ λ€μ λ λ²¨λ‘ λμ΄κ°
16
+ """
17
+ # Definition for a binary tree node.
18
+ # class TreeNode:
19
+ # def __init__(self, val=0, left=None, right=None):
20
+ # self.val = val
21
+ # self.left = left
22
+ # self.right = right
23
+ class Solution :
24
+ def levelOrder (self , root : Optional [TreeNode ]) -> List [List [int ]]:
25
+ if not root :
26
+ return []
27
+
28
+ result = []
29
+ queue = deque ([root ])
30
+
31
+ while queue :
32
+ level_size = len (queue )
33
+ current_level = []
34
+
35
+ for _ in range (level_size ):
36
+ node = queue .popleft ()
37
+ current_level .append (node .val )
38
+
39
+ if node .left :
40
+ queue .append (node .left )
41
+ if node .right :
42
+ queue .append (node .right )
43
+
44
+ result .append (current_level )
45
+
46
+ return result
Original file line number Diff line number Diff line change
1
+ """
2
+ Constraints:
3
+ - 0 <= n <= 10^5
4
+
5
+ Time Complexity: O(n log n)
6
+ - μΈλΆ 루ν: O(n) (0λΆν° nκΉμ§ λ°λ³΅)
7
+ - hammingWeight ν¨μ: O(log n)
8
+ - μ΄ μκ° λ³΅μ‘λ: O(n) * O(log n) = O(n log n)
9
+
10
+ Space Complexity: O(n)
11
+ - κ²°κ³Όλ₯Ό μ μ₯νκΈ° μν κΈΈμ΄ n+1μ λ°°μ΄ νμ
12
+
13
+ νμ΄λ°©λ²:
14
+ 1. κΈΈμ΄κ° n+1μΈ ans λ°°μ΄μ μμ±
15
+ 2. 0λΆν° nκΉμ§μ κ° μ«μμ λν΄:
16
+ - hammingWeight ν¨μλ₯Ό μ¬μ©νμ¬ μ«μ iλ₯Ό μ΄μ§μλ‘ λ³ννμ λ 1μ κ°μ κ³μ°
17
+ - κ²°κ³Όλ₯Ό ans[i]μ μ μ₯
18
+ 3. ans λ°°μ΄ λ°ν
19
+ """
20
+ class Solution :
21
+ def countBits (self , n : int ) -> List [int ]:
22
+ ans = [0 ] * (n + 1 )
23
+
24
+ for i in range (n + 1 ):
25
+ ans [i ] = self .hammingWeight (i )
26
+ return ans
27
+
28
+ def hammingWeight (self , n : int ) -> int :
29
+ count = 0
30
+ while n :
31
+ count += n & 1
32
+ n >>= 1
33
+ return count
Original file line number Diff line number Diff line change
1
+ """
2
+ Constraints:
3
+ - 1 <= nums.length <= 100
4
+ - 0 <= nums[i] <= 1000
5
+
6
+ Time Complexity: O(n)
7
+
8
+ Space Complexity: O(n)
9
+
10
+ νμ΄λ°©λ²:
11
+ 1. μ§μ΄ νλλ§ μλ κ²½μ° β κ·Έ μ§μ ν
12
+ 2. λ¨Όμ μνμ΄ μλ μΌλ°μ μΈ House Robber λ¬Έμ λ₯Ό ν΄κ²°νλ ν¨μλ₯Ό ꡬνν¨
13
+ 3. μ΄ λ¬Έμ μ μ μ½μ‘°κ±΄μ ν¬ν¨νκΈ° μν΄:
14
+ - 첫 λ²μ§Έ μ§μ νΈμ§ μλ κ²½μ° (nums[1:])
15
+ - λ§μ§λ§ μ§μ νΈμ§ μλ κ²½μ° (nums[:-1])
16
+ - λ μ€ μ΅λκ°μ λ°ν
17
+ """
18
+ class Solution :
19
+ def rob (self , nums : List [int ]) -> int :
20
+ if len (nums ) == 1 :
21
+ return nums [0 ]
22
+
23
+ def rob_simple (houses ):
24
+ if len (houses ) == 1 :
25
+ return houses [0 ]
26
+ elif len (houses ) == 2 :
27
+ return max (houses [0 ], houses [1 ])
28
+
29
+ dp = [0 ] * len (houses )
30
+ dp [0 ] = houses [0 ]
31
+ dp [1 ] = max (houses [0 ], houses [1 ])
32
+
33
+ for i in range (2 , len (houses )):
34
+ dp [i ] = max (dp [i - 1 ], houses [i ] + dp [i - 2 ])
35
+
36
+ return dp [- 1 ]
37
+
38
+ return max (rob_simple (nums [1 :]), rob_simple (nums [:- 1 ]))
Original file line number Diff line number Diff line change
1
+ """
2
+ Time Complexity: O(n log n)
3
+ - μ λ ¬μ O(n log n)
4
+ - κ° λ―Έν
μ λν ν μ°μ°μ΄ O(log n)
5
+
6
+ Space Complexity: O(n)
7
+ - μ΅μ
μ κ²½μ° λͺ¨λ λ―Έν
μ΄ λμμ μ§νλμ΄ νμ nκ°μ μμκ° μ μ₯λ¨
8
+
9
+ νμ΄λ°©λ²:
10
+ 1. λ―Έν
μκ°(intervals)μ μμ μκ°μ κΈ°μ€μΌλ‘ μ λ ¬ν¨
11
+ 2. μ΅μ νμ μ΄μ©ν΄μ νμ¬ μ§ν μ€μΈ λ―Έν
μ μ’
λ£μκ°μ μ μ₯ν¨
12
+ 3. κ° λ―Έν
μ μννλ©΄μ:
13
+ - μ λ―Έν
μ μμμκ°μ΄ νμ μ΅μ μ’
λ£μκ°λ³΄λ€ ν¬κ±°λ κ°μΌλ©΄ -> κ°μ₯ μΌμ° λλλ λ―Έν
μ νμμ μ κ±°
14
+ - νμ¬ λ―Έν
μ μ’
λ£μκ°μ νμ μΆκ°
15
+ 4. νμ ν¬κΈ° = νμν μ΅μ νμμ€μ μ
16
+ """
17
+ import heapq
18
+
19
+ def min_meeting_rooms (intervals ):
20
+ if not intervals :
21
+ return 0
22
+
23
+ intervals .sort (key = lambda x : x [0 ])
24
+
25
+ rooms = []
26
+
27
+ heapq .heappush (rooms , intervals [0 ][1 ])
28
+
29
+ for i in range (1 , len (intervals )):
30
+ if intervals [i ][0 ] >= rooms [0 ]:
31
+ heapq .heappop (rooms )
32
+ heapq .heappush (rooms , intervals [i ][1 ])
33
+ return len (rooms )
34
+
You canβt perform that action at this time.
0 commit comments