File tree Expand file tree Collapse file tree 2 files changed +77
-0
lines changed
binary-tree-level-order-traversal Expand file tree Collapse file tree 2 files changed +77
-0
lines changed Original file line number Diff line number Diff line change 1+ from collections import deque
2+ from typing import List , Optional
3+
4+
5+ class TreeNode :
6+ def __init__ (self , val = 0 , left = None , right = None ):
7+ self .val = val
8+ self .left = left
9+ self .right = right
10+
11+
12+ class Solution :
13+ def levelOrder (self , root : Optional [TreeNode ]) -> List [List [int ]]:
14+ """
15+ - Idea: ๋๋น ์ฐ์ ํ์(BFS)๋ฅผ ์ด์ฉํ์ฌ ์ด์ง ํธ๋ฆฌ๋ฅผ ๋จ๊ณ ๋ณ๋ก ์ํํ๋ค.
16+ - Time Complexity: O(n). n์ ํธ๋ฆฌ์ ๋
ธ๋ ์.
17+ ๋ชจ๋ ๋
ธ๋๋ฅผ ํ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋ฏ๋ก O(n) ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
18+ - Space Complexity: O(n). n์ ํธ๋ฆฌ์ ๋
ธ๋ ์.
19+ ๊ฐ์ฅ ์๋ ๋จ๊ณ์ ์๋ ๋
ธ๋๋ฅผ ์ ์ฅํ ๋ ๊ฐ์ฅ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ , ์ด๋ n์ ๋น๋กํ๊ธฐ ๋๋ฌธ์ O(n) ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค.
20+ """
21+ if not root :
22+ return []
23+
24+ result = []
25+ queue = deque ()
26+ queue .append (root )
27+
28+ while queue :
29+ level = []
30+
31+ for i in range (len (queue )):
32+ node = queue .popleft ()
33+ level .append (node .val )
34+
35+ if node .left :
36+ queue .append (node .left )
37+ if node .right :
38+ queue .append (node .right )
39+
40+ result .append (level )
41+
42+ return result
Original file line number Diff line number Diff line change 1+ from typing import List
2+
3+
4+ class Solution :
5+ def rob (self , nums : List [int ]) -> int :
6+ """
7+ - Idea: i๋ฒ์งธ ์ง๊น์ง์ ์ต๋ ๊ธ์ก์ ๋ ๊ฐ์ง ์ค ๋ ํฐ ๊ฐ์ผ๋ก ๊ฒฐ์ ๋๋ค.
8+ 1. (i-2๋ฒ์งธ ์ง๊น์ง์ ์ต๋ ๊ธ์ก) + i๋ฒ์งธ ์ง์ ๊ธ์ก
9+ 2. (i-1๋ฒ์งธ ์ง๊น์ง์ ์ต๋ ๊ธ์ก)
10+ ์ด๋ฅผ ์ด์ฉํด ๋์ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๊ฐ ์ง๊น์ง์ ์ต๋ ๊ธ์ก์ ๊ณ์ฐํ๋ค.
11+
12+ ๋ค๋ง, ๋งจ ๋ง์ง๋ง ์ง๊ณผ ์ฒซ๋ฒ์งธ ์ง์ด ์ด์ด์ง ์ฌ์ดํด(cycle) ํํ์ด๊ธฐ ๋๋ฌธ์
13+ ์ฒซ๋ฒ์งธ ์ง๊ณผ ๋ง์ง๋ง ์ง์ด ๋์์ ๋๋๋ง์ ์๋ ์๋ค.
14+ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ก ๋๋ ์ ๊ฐ๊ฐ ๊ณ์ฐํ๊ณ , ๋ ์ค ๋ ํฐ ๊ฐ์ ์ ํํ๋ค.
15+ 1. ์ฒซ๋ฒ์งธ ์ง์ ํฌํจํ๊ณ ๋ง์ง๋ง ์ง์ ํฌํจํ์ง ์๋ ๊ฒฝ์ฐ
16+ 2. ์ฒซ๋ฒ์งธ ์ง์ ํฌํจํ์ง ์๊ณ ๋ง์ง๋ง ์ง์ ํฌํจํ๋ ๊ฒฝ์ฐ
17+ - Time Complexity: O(n). n์ ์ง์ ๊ฐ์.
18+ ๋ชจ๋ ์ง์ ํ๋ฒ์ฉ ์ํํด์ผ ํ๋ฏ๋ก O(n) ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
19+ - Space Complexity: O(n). n์ ์ง์ ๊ฐ์.
20+ ๊ฐ ์ง๊น์ง์ ์ต๋ ๊ธ์ก์ ์ ์ฅํ๊ธฐ ์ํด ๋ฐฐ์ด์ ์ฌ์ฉํ๋ฏ๋ก O(n) ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค.
21+ """
22+ if len (nums ) == 1 :
23+ return nums [0 ]
24+
25+ dp1 = [0 ] + [0 ] * len (nums )
26+ dp1 [1 ] = nums [0 ]
27+
28+ dp2 = [0 ] + [0 ] * len (nums )
29+ dp2 [1 ] = 0
30+
31+ for i in range (2 , len (nums ) + 1 ):
32+ dp1 [i ] = max (dp1 [i - 1 ], dp1 [i - 2 ] + nums [i - 1 ])
33+ dp2 [i ] = max (dp2 [i - 1 ], dp2 [i - 2 ] + nums [i - 1 ])
34+
35+ return max (dp1 [- 2 ], dp2 [- 1 ])
You canโt perform that action at this time.
0 commit comments