Skip to content

Commit 4e490ca

Browse files
author
jinvicky
committed
find minimum in rotated sorted array solution
1 parent 29dbfe5 commit 4e490ca

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
class Solution {
3+
public int findMin(int[] nums) {
4+
int left = 0;
5+
int right = nums.length - 1;
6+
7+
// 0번째값이 length-1번재 값보다 작다면 rotate되지 않았음을 보장합니다.
8+
// 2,3,4,5,1 0번째 > length-1번째
9+
// 3,4,5,1,2 0번째 > length-1번째
10+
// 1,2,3,4,5 0번째 < length-1번째
11+
if (nums[right] >= nums[left]) return nums[0];
12+
13+
while (left < right) {
14+
// 단순히 (left+right)/2 보다 범위 계산 오차가 없습니다.
15+
int mid = left + (right - left) / 2;
16+
17+
// 중간값이 오른쪽값보다 크다면 왼쪽 포인터를 중간값+1로 증가합니다.
18+
if (nums[mid] > nums[right]) {
19+
left = mid + 1;
20+
} else {
21+
// 중간값보다 오른쪽값이 크다면 중간값이 최대 범위가 되어야 합니다.
22+
right = mid;
23+
}
24+
}
25+
return nums[left];
26+
}
27+
}

0 commit comments

Comments
 (0)