File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed
find-minimum-in-rotated-sorted-array Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ """
2
+ Constraints:
3
+ - n == nums.length
4
+ - 1 <= n <= 5000
5
+ - -5000 <= nums[i] <= 5000
6
+ - All the integers of nums are unique.
7
+ - nums is sorted and rotated between 1 and n times.
8
+
9
+ Time Complexity: O(log n)
10
+ - ์ด์ง ํ์์ ์ฌ์ฉํ๋ฏ๋ก ๋งค ๋จ๊ณ๋ง๋ค ํ์ ๋ฒ์๊ฐ ์ ๋ฐ์ผ๋ก ์ค์ด๋ฆ
11
+
12
+ Space Complexity: O(1)
13
+ - ์ถ๊ฐ ๊ณต๊ฐ์ ์ฌ์ฉํ์ง ์๊ณ ํฌ์ธํฐ๋ง ์ฌ์ฉ
14
+
15
+ ํ์ด๋ฐฉ๋ฒ:
16
+ 1. ์ด์ง ํ์(Binary Search) ํ์ฉ
17
+ 2. mid์ right ๊ฐ์ ๋น๊ตํ์ฌ ์กฐ๊ฑด์ ๋๋
18
+ - Case 1: nums[mid] > nums[right]
19
+ - ์ค๋ฅธ์ชฝ ๋ถ๋ถ์ด ์ ๋ ฌ๋์ด ์์ง ์์
20
+ - ์ต์๊ฐ์ mid ์ค๋ฅธ์ชฝ์ ์กด์ฌ
21
+ - left = mid + 1
22
+ - Case 2: nums[mid] <= nums[right]
23
+ - mid๋ถํฐ right๊น์ง๋ ์ ๋ ฌ๋์ด ์์
24
+ - ์ต์๊ฐ์ mid๋ฅผ ํฌํจํ ์ผ์ชฝ์ ์กด์ฌ ๊ฐ๋ฅ
25
+ - right = mid
26
+ """
27
+
28
+ class Solution :
29
+ def findMin (self , nums : List [int ]) -> int :
30
+ left = 0
31
+ right = len (nums ) - 1
32
+
33
+ while left < right :
34
+ mid = (left + right ) // 2
35
+
36
+ if nums [mid ] > nums [right ]:
37
+ left = mid + 1
38
+
39
+ else :
40
+ right = mid
41
+
42
+ return nums [left ]
You canโt perform that action at this time.
0 commit comments