File tree 1 file changed +34
-0
lines changed
find-minimum-in-rotated-sorted-array
1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change
1
+ """
2
+ ํ์ด :
3
+ ์ต์ด ์์ ์ nums[left]๊ฐ nums[right]๋ณด๋ค ์์ ๊ฒฝ์ฐ๋ n๋งํผ rotate๋ ์ํ(์๋ ์์ )
4
+ ๊ฐ์ ๊ฒฝ์ฐ๋ len(nums) == 1์ธ ๊ฒฝ์ฐ
5
+ mid์ right์ ๊ฐ์ ๋น๊ตํด์ mid์ ๊ฐ์ด ์๋ค๋ฉด mid๋ถํฐ right๊น์ง๋ ์ ๋ ฌ๋์์ผ๋ฏ๋ก ์ข์ธก์ ์ต์๊ฐ ์กด์ฌ
6
+ -> right = mid - 1
7
+ ๋ฐ๋์ ๊ฒฝ์ฐ๋ ์ต์๊ฐ์ด ์ฐ์ธก์ ์์ผ๋ฏ๋ก left = mid + 1
8
+
9
+ - left, mid, right์ ์ ์ ํ ํ ๋นํ ์ ์๋๋ก ์์ ๊ตฌํ ์ํ ๊ฒ
10
+ - mid๊ฐ ์ต์๊ฐ์ผ ๊ฒฝ์ฐ์ ๋ํ ์์ธ์ฒ๋ฆฌ
11
+
12
+ nums์ ๊ธธ์ด : n
13
+
14
+ TC : O(logN)
15
+ ๋ฐ์ฉ ๋๋ ์ ํ์ํ๋ฏ๋ก log2N
16
+
17
+ SC : O(1)
18
+ """
19
+
20
+ class Solution :
21
+ def findMin (self , nums : List [int ]) -> int :
22
+ left = 0
23
+ right = len (nums ) - 1
24
+ if nums [left ] <= nums [right ] :
25
+ return nums [left ]
26
+ while (nums [right ] < nums [left ]):
27
+ mid = (left + right ) // 2
28
+ if nums [mid - 1 ] > nums [mid ]:
29
+ return nums [mid ]
30
+ if nums [mid ] < nums [right ] :
31
+ right = mid - 1
32
+ else :
33
+ left = mid + 1
34
+ return nums [left ]
You canโt perform that action at this time.
0 commit comments