此题与 该题类似:剑指 Offer 11. 旋转数组的最小数字
区别在于这个数组旋转多次 ,但任然可以与最右侧值相比较,判断条件相同,不需要在意做半段或者右半段
class Solution {
public int findMin(int[] nums) {
return binarySearch(nums,0,nums.length-1);
}
public int binarySearch(int[] a , int l , int r ){
if(l>r) return a[l];
int mid = (l+r) /2;
if(a[mid] > a[r]) return binarySearch(a , mid + 1 , r );
else if(a[mid] < a[r]) return binarySearch(a , l , mid );
else return binarySearch(a,l,--r);
}
}