File tree 2 files changed +45
-0
lines changed
find-minimum-in-rotated-sorted-array
2 files changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ # 회전된 오름차순 배열에서 최소값을 이진 탐색으로 찾아라
2
+
3
+ # O(N) time, O(1) space -> 시간 복잡도 충족 x
4
+ class Solution :
5
+ def findMin (self , nums : List [int ]) -> int :
6
+ for i in range (1 , len (nums )):
7
+ if nums [i - 1 ] > nums [i ]:
8
+ return nums [i ]
9
+ return nums [0 ]
10
+
11
+
12
+ class Solution :
13
+
14
+
15
+ # 이진 탐색 풀이
16
+ # O(log n) time, O(1) space
17
+ class Solution :
18
+ def findMin (self , nums : List [int ]) -> int :
19
+ low , high = 1 , len (nums ) - 1
20
+ while low <= high :
21
+ mid = (low + high ) // 2
22
+ if nums [mid - 1 ] > nums [mid ]:
23
+ return nums [mid ]
24
+ if nums [0 ] < nums [mid ]:
25
+ low = mid + 1
26
+ else :
27
+ high = mid - 1
28
+ return nums [0 ]
Original file line number Diff line number Diff line change
1
+ function findMin ( nums : number [ ] ) : number {
2
+ let low = 0 ,
3
+ high = nums . length - 1 ;
4
+
5
+ while ( low <= high ) {
6
+ let mid = Math . floor ( ( low + high ) / 2 ) ;
7
+ if ( nums [ mid - 1 ] > nums [ mid ] ) {
8
+ return nums [ mid ] ; // 회전이 일어난 곳
9
+ }
10
+ if ( nums [ 0 ] < nums [ mid ] ) {
11
+ low = mid + 1 ; // 왼쪽은 이미 정렬되어 있어, 오른쪽으로 이동
12
+ } else {
13
+ high = mid - 1 ; // 왼쪽으로 이동
14
+ }
15
+ }
16
+ return nums [ 0 ] ;
17
+ }
You can’t perform that action at this time.
0 commit comments