https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/
n 길이의 오름차순 정렬된 배열이 1~n번 회전된다. 예를 들어 1번 회전 후 결과는 nums[n-1], nums[0], ..., nums[n-2] 형태 이다. 이때 배열에서의 최솟값 반환하기 (배열은 중복된 값을 가진다.)
최대랑 최소가 붙어 있고 정렬되어 있는 상태로 섞인 것이기 때문에 이전게 더 크다면 최대 최소인 케이스고 (if문), 그게 아니면 left 땡겨서 최대 최소쪽 보도록 해야한다. (right를 땡겨도 상관 없다.)
// 아 어차피 맨 밑 Min 함수에서 다 걸리는 거였다.. (이게 n자체가 5000이라 min 함수도 통과 되는 것 같다 -> 이분 탐색 자체를 쓰는 식으로 변경하는게 좋을듯하다.)
public class Solution {
public int FindMin(int[] nums) {
int left = 0;
int right = nums.Length - 1;
int index = -1;
while (left < right)
{
int mid = (left + right) / 2;
if (nums[mid] > nums[mid + 1])
{
return nums[mid + 1];
}
left = left + 1;
}
return nums.Min();
}
}