【练习笔记】剑指offer-面试题8 :旋转数组的最小数字

来源:互联网 发布:搜索字幕的软件 编辑:程序博客网 时间:2024/06/04 19:58

【问题】

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

【答案】

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;        int mid =start;        while(array[start]>=array[end]){            if(end-start==1){                mid = end;                break;            }            mid = (start+end)/2;            if(array[start]==array[end]&&array[mid]==array[start]){                return get(array);            }            if(array[start]<=array[mid]){                start = mid;            }else if(array[end]>=array[mid]){                end = mid;            }        }        return array[mid];    }    public int get(int [] array){        int min=array[0];        for(int i=1;i<array.length;i++){            if(array[i]<min){                min = array[i];            }        }        return min;    }}


0 0
原创粉丝点击