旋转数组中的最小数字

题目描述

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

解题思路

  • 该数组为非减排序数组的旋转,需要找到该数组的最小元素,可采用二分查找法。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
if(array.length == 0){
return 0;
}
int start = 0;
int end = array.length - 1;
while(start < end){
int mid = start + (end - start) / 2;
if (array[mid] <= array[end]){
end = mid;
}else{
start = mid + 1;
}
}
return array[start];
}
}
坚持原创技术分享,您的支持将鼓励我继续创作!