【剑指offer】旋转数组中的最小数字

旋转数组中的最小数字

      把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

  • 解题思路

因为数组是升序的,一旦旋转,则数组中一定会出现大—>最小——>升序的情况,所以只需要遍历数组,一段出现后一个元素比当前元素小,输出后一个元素即可。

public class Solution {
    public int minNumberInRotateArray(int [] array) {
        if (array.length == 0){
            return 0;
        }
        for (int i = 0; i < array.length; ++ i){
            if (array[i] > array[i + 1]){
                return array[i + 1];
            }
        }
        return array[0];
    }
}

       这里利用了数组非降序的,不知道算不算是抖机灵,各位如果有更好的方法欢迎一起交流。

       之前的【剑指offer】系列忘记给大家提供测试网址了,在这里剑指offer可以选择对应的题目,然后将代码拷贝进去提交运行就可以了,欢迎大家交流,如果有更好的方法也欢迎大家提出!

猜你喜欢

转载自blog.csdn.net/TsuiXh/article/details/52802283