【剑指Offer】11.旋转数组中最小的数字

题目简单明了,就是给你一个不是递减的数组,经过“旋转”后让你求最小的值

这时,你要是想着直接遍历一遍数组不久OK了,那这绝不是面试公司想要考你的东西,这时我们应该想到题目给的条件

数组被分为两个非递减的数组了,这时可以采用二分法,代码非常简单,就是使用二分。

import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
        int index1 = 0;
        int index2 = array.length-1;
        int indexmid = 0;
        if(array.length==0)
            return 0;
        if(array.length==1)
            return array[0];
        while((index2 - index1)!=1)
        {
            indexmid = (index1 + index2)/2;
            if(array[index1]>array[indexmid])
                index2 = indexmid;
            else
                index1 = indexmid;
        }
        return array[index2];
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_41963657/article/details/84566137