您的位置:首页 > Web前端

旋转数组的最小数字(剑指Offer)

2018-03-04 22:27 211 查看
一道二分法的简单题目

public static int minNumberInRotateArray(int[] array) {
int len = array.length;
if (len == 0) return 0;
else if (array[0] <= array[len - 1]) return array[0];
else if (array[len - 1] < array[len - 2]) return array[len - 1];
int beg = 0;
int end = array.length - 1;
//有旋转且不是最后一个 之所以把最后一个的判断放在上面是为了节约时间
while (beg <= end) {
int mid = (beg + end) / 2;
if (mid == 0) beg = mid + 1;
else if (array[mid] < array[mid - 1]) return array[mid];
else if (array[mid] >= array[0]) beg = mid + 1;
else if (array[mid] <= array[len - 1]) end = mid - 1;
}
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  剑指Offer