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