File tree Expand file tree Collapse file tree 3 files changed +106
-0
lines changed
search-in-rotated-sorted-array Expand file tree Collapse file tree 3 files changed +106
-0
lines changed Original file line number Diff line number Diff line change 1+ from typing import List
2+
3+
4+ class Solution :
5+ def canFinish (self , numCourses : int , prerequisites : List [List [int ]]) -> bool :
6+ """
7+ - Idea: ๊ฐ ๊ณผ๋ชฉ์ ์ ํ ๊ณผ๋ชฉ์ ์ฌ์ดํด์ด ์กด์ฌํ๋์ง DFS๋ก ํ์ํ๋ค.
8+ ํ๋๋ผ๋ ์ฌ์ดํด์ด ์กด์ฌํ๋ค๋ฉด, ๋ชจ๋ ๊ณผ๋ชฉ์ ์๊ฐํ ์ ์๋ค๋ ์๋ฏธ๋ค.
9+ - Time Complexity: O(v + e). v์ e๋ ๊ฐ๊ฐ ๊ณผ๋ชฉ์ ์, e๋ ์ ํ ๊ด๊ณ(๊ณผ๋ชฉ => ์ ํ ๊ณผ๋ชฉ)์ ์๋ค.
10+ ๋ชจ๋ ๊ณผ๋ชฉ๊ณผ ๊ทธ ๊ณผ๋ชฉ์ ์ ํ ๊ณผ๋ชฉ์ ํ์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ ๋
ธ๋์ ์ฃ์ง์ ๋ํด ํ๋ฒ์ฉ ๋ฐฉ๋ฌธํด์ผ ํ๋ค.
11+ - Space Complexity: O(v + e). v์ e๋ ๊ฐ๊ฐ ๊ณผ๋ชฉ์ ์, e๋ ์ ํ ๊ด๊ณ์ ์๋ค.
12+ ๊ฐ ๊ณผ๋ชฉ์ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ํด O(v) ๊ณต๊ฐ์ด ํ์ํ๊ณ ,
13+ ๊ณผ๋ชฉ ๊ฐ ์ ํ ๊ด๊ณ๋ฅผ ์ ์ฅํ๋ ์ธ์ ๋ฆฌ์คํธ๋ O(e)์ ๊ณต๊ฐ์ ์ฐจ์งํ๋ค.
14+ """
15+
16+ graph = {i : [] for i in range (numCourses )}
17+
18+ for course , prerequisite in prerequisites :
19+ graph [course ].append (prerequisite )
20+
21+ visited = set ()
22+
23+ def DFS (course ):
24+ if course in visited :
25+ return False
26+ if graph [course ] == []:
27+ return True
28+
29+ visited .add (course )
30+ for prerequisite in graph [course ]:
31+ if not DFS (prerequisite ):
32+ return False
33+
34+ visited .remove (course )
35+ graph [course ] = []
36+
37+ return True
38+
39+ for course in range (numCourses ):
40+ if not DFS (course ):
41+ return False
42+
43+ return True
Original file line number Diff line number Diff line change 1+ from typing import Optional
2+
3+
4+ class TreeNode :
5+ def __init__ (self , val = 0 , left = None , right = None ):
6+ self .val = val
7+ self .left = left
8+ self .right = right
9+
10+
11+ class Solution :
12+ """
13+ - Idea: ์ฌ๊ท๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ๋
ธ๋์ ์ผ์ชฝ ์์๊ณผ ์ค๋ฅธ์ชฝ ์์์ ๋ฐ๊พผ๋ค.
14+ - Time Complexity: O(n). n์ ์ ์ฒด ๋
ธ๋์ ์๋ค.
15+ ๋ชจ๋ ๋
ธ๋์ ๋ํด์ ๋ฐ๋ณต์ ์ผ๋ก ์ํํด์ผ ํ๊ธฐ ๋๋ฌธ์ O(n) ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
16+ - Space Complexity: O(n). n์ ์ ์ฒด ๋
ธ๋์ ์๋ค.
17+ ์ต์
์ ๊ฒฝ์ฐ, ๋ถ๊ท ํ ํธ๋ฆฌ์์๋ ์ฌ๊ท ํธ์ถ๋ก ์ธํด ์ต๋ O(n) ์คํ ๊ณต๊ฐ์ด ํ์ํ๋ค.
18+ """
19+
20+ def invertTree (self , root : Optional [TreeNode ]) -> Optional [TreeNode ]:
21+ if root is None :
22+ return
23+
24+ root .left , root .right = root .right , root .left
25+
26+ self .invertTree (root .left )
27+ self .invertTree (root .right )
28+
29+ return root
Original file line number Diff line number Diff line change 1+ from typing import List
2+
3+
4+ class Solution :
5+ """
6+ - ์์ด๋์ด: ๋ฐฐ์ด์ ์ค๊ฐ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ, ์ค๋ฅธ์ชฝ ์ค ํ์ชฝ์ ํญ์ ์ ๋ ฌ๋์ด ์๋ค.
7+ ์ด ํน์ง์ ์ฐฉ์ํ์ฌ, ์ด๋ ์ชฝ์ด ๋จผ์ ์ ๋ ฌ๋์ด ์๋์ง ํ์ธํ๊ณ , ๊ทธ ์์
8+ ์ฐพ์ผ๋ ค๋ ๊ฐ์ด ์๋์ง๋ฅผ ํ์ธํ๋ ๋ฐฉ์์ผ๋ก ํ์ ๋ฒ์๋ฅผ ์ขํ๊ฐ๋ค.
9+ - ์๊ฐ ๋ณต์ก๋: O(logn). n์ ๋ฐฐ์ด์ ๊ธธ์ด.
10+ ๋ฐฐ์ด์ ์ ๋ฐ์ฉ ๋๋์ด ํ์์ ์งํํ๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ O(logn)์ด๋ค.
11+ - ๊ณต๊ฐ ๋ณต์ก๋: O(1). ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ์์ ๊ณต๊ฐ๋ง ํ์ํ๋ค.
12+ """
13+
14+ def search (self , nums : List [int ], target : int ) -> int :
15+ left , right = 0 , len (nums ) - 1
16+
17+ while left <= right :
18+ mid = (left + right ) // 2
19+
20+ if nums [mid ] == target :
21+ return mid
22+
23+ if nums [left ] <= nums [mid ]:
24+ if nums [left ] <= target < nums [mid ]:
25+ right = mid - 1
26+ else :
27+ left = mid + 1
28+ else :
29+ if nums [mid ] < target <= nums [right ]:
30+ left = mid + 1
31+ else :
32+ right = mid - 1
33+
34+ return - 1
You canโt perform that action at this time.
0 commit comments