File tree Expand file tree Collapse file tree 2 files changed +45
-0
lines changed
find-minimum-in-rotated-sorted-array Expand file tree Collapse file tree 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