剑指offer--旋转数组中的最小数字
旋转数组的最小数字
http://www.nowcoder.com/questionTerminal/9f3231a991af4f55b95579b44b7a01ba
解法
- 可以使用暴力解题 直接遍历一次 时间复杂度是O(n)
- 使用二分的变形,把右端点当成target,然后每次进行比较 如果array[mid] <=target 就把右端点变成mid 否者就是left 变成mid+1
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
int right = array.length-1;
int left = 0;
int target = array[right];
while(left<right ){
int mid = (left+right)/2;
if(array[mid] <= target){
right = mid ;
target = array[mid];
}else if (array[mid]>target){
left = mid+1;
}else{
left++;
}
}
return target;
}
} 
查看9道真题和解析