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];
}
}

博客围绕旋转数组展开,介绍把非递减排序数组的开始若干元素移到末尾形成旋转数组。题目要求输出旋转数组最小元素,给出两种思路,一是暴力循环,二是利用有序性质二分查找,最坏情况用线性探测。

被折叠的 条评论
为什么被折叠?



