题解 | #旋转数组的最小数字#
旋转数组的最小数字
http://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba
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){ if(array[start] < array[end]){ return array[start]; } int mid = (end+start)>>1 ; if(array[start]==array[end] && array[start]==array[mid]){//有相同的元素 int ret = array[start]; for(int i=start+1;i<end;i++){ if(array[i]< ret){ ret = array[i]; } } return ret; }else if(array[start] < array[mid]){ start=mid; }else{ end--; start++; } } return array[start]; } }
我感觉这题很神奇 ....改着改着就过了