题解 | #旋转数组的最小数字#

旋转数组的最小数字

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

我感觉这题很神奇 ....改着改着就过了

全部评论

相关推荐

01-14 15:08
东南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务