/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @param numsLen int nums数组长度
* @return int整型
*/
int minNumberInRotateArray(int* nums, int numsLen ) {
// write code here
return findminNumberInRotateArray(nums, 0, numsLen - 1);
}
// 1 2 3 4 5
// 3 4 5 1 2
// 5 1 2 5 5 5 5 5 5
// 0 1 2 3 4 5 6 7 8
// left = 0, right = 8
// mid = 4
int findminNumberInRotateArray(int* nums, int left, int right) {
if(left == right) return nums[left];
int mid = left + (right - left) / 2;
if(nums[mid] > nums[right]) {
return findminNumberInRotateArray(nums, mid + 1, right);
} else if(nums[mid] == nums[right]) {
return findminNumberInRotateArray(nums, left, right - 1);
// 4 4 4 3 4
// 4 3 4 4 4
}
// 5 5 1 2 3
return findminNumberInRotateArray(nums, left, mid);
}