File tree Expand file tree Collapse file tree 4 files changed +151
-0
lines changed
binary-tree-level-order-traversal Expand file tree Collapse file tree 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