1.题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
2.题目示例
3.思路及代码
- 思路一:暴力循环即可
- 思路二:利用有序的性质,二分查找,在最坏的情况使用线性探测(但是好像用例中没有这种用例)
- 代码:
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
int left = 0;
int right = array.length - 1;
int mid = 0;
while(left < right){
if(right - left == 1){
mid = right;
break;
}
//最坏的情况
// if(array[left] == array[right] && array[mid] == array[left]){
// int res = array[left];
// for(int i = left + 1; i < right; i++){
// if(array[i] < res){
// res = array[i];
// }
// }
// return res;
// }
mid = (left + right) >> 1;
if(array[mid] >= array[left]){
left = mid;
}else{
right = mid;
}
}
return array[mid];
}
}