0. 문제
https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150
1. 문제 설명
- 정수 배열이 주어질 때, 최대값의 인덱스를 반환하시오.
2. 문제 풀이
2.1. 접근법 : 이분탐색
- 만약 중간 인덱스의 값이 오른쪽 끝 값보다 크다면, 최소 값은 mid의 오른쪽에 위치할 것이라고 예측한다.
- 따라서 left를 mid + 1로 변경하여 검색 범위를 오른쪽으로 좁힌다.
- 중간 값이 오른쪽 끝 값보다 작을 때는 최소값은 왼쪽에 있을 것이라고 예측한다.
- 따라서 right를 mid로 설정하여 검색 범위를 좌측으로 좁힌다.
class Solution {
public int findPeakElement(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left < right) {
int mid = (left + right) / 2;
if (nums[mid] < nums[mid + 1]) {
left = mid + 1;
} else {
right = mid;
}
}
return left;
}
}
4. 결과