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

旋转数组的最小数字

https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba

import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int[] array) {
        return getMin(array, 0, array.length - 1);
    }

    public int getMin(int[] array, int start, int end) {
        if (start == end) {
            return array[start];
        }
        int midIndex = (start + end) / 2;
        int mid = array[midIndex];
        int left = array[start];
        int right = array[end];

        if (mid > left &&
                mid < right) { //大于左边值,小于右边值,则说明是是升序,左边值则是最小值
            return left;
        } else if (mid >
                   right) { // 如果mid大于右边的值,则说明在mid和右边之间
            return getMin(array, Math.min(midIndex + 1, end), end);
        } else if (mid >
                   left) { // 如果mid 小于左边的值,则说明左边和mid之间
            return getMin(array, start, Math.max(midIndex - 1, start));
        } else {
            int leftMin = getMin(array, start, Math.max(midIndex , start)); // 这里没有减1,是因为这里如果减1可能会导致少一个值,midIndex可能就是最小的值会丢掉
            int rightMin = getMin(array, Math.min(midIndex + 1, end), end);
            return Math.min(leftMin, rightMin);
        }

    }




}

全部评论

相关推荐

11-28 17:58
门头沟学院 Java
美团 JAVA开发 n×15.5
牛客786276759号:百度现在晋升很难的 而且云这块的业务没美团好 你看百度股价都跌成啥样了
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务