File tree 3 files changed +106
-0
lines changed
search-in-rotated-sorted-array
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