/**
* Suppose a sorted array is rotated at some pivot unknown to you beforehand.
* (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
*
* Find the minimum element.
* You may assume no duplicate exists in the array.
*
* Tags: Array, Binary Search
*/
class FindRotatedArrMin {
public static void main(String[] args) {
int[] num = { 3, 4, 5, 6, 0, 1, 2 };
// int[] num = { 4, 5, 6, 7, 0, 1, 2 };
System.out.println(findMin(num));
}
static int findMin(int[] num) {
int l = 0;
int r = num.length - 1;
if (num.length == 1 || num[l] < num[r]) return num[0];
int mid = 0;
while (l < r) {
mid = l + (r - l) / 2;
System.out.println(mid);
if (num[l] < num[mid]) l = mid;
else r = mid;
}
return num[l + 1];
}
}