牛客网刷题(JAVA) 4:旋转数组的最小数字

难度系数 ⭐

时间限制 C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M

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

思路 按照规律,最小值的左边一个元素必然大于该元素;若最小值左边没有数字,则必然在第1位。故而初始最小值设为数组的第一个元素即可。

package nowcoder;

import java.util.Arrays;

public class No4 {
    public static int minNumberInRotateArray(int[] array) {
        if (array == null) return 0;
        int min = array[0];
        for (int i = 1; i < array.length; i++) {
            if (array[i] < array[i - 1]) min = array[i];
        }
        return min;
    }

    public static void main(String[] args){
        int[] arr = {5, 6, 1, 2, 3, 4};
        System.out.println(minNumberInRotateArray(arr));
    }
}
发布了149 篇原创文章 · 获赞 36 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Dorothy_Xue/article/details/105373816