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

旋转数组的最小数字

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

原来是递增数列,旋转后分成两个递增数列,并且前一个数列的首位大于后一个数列的末尾 123456->456123 找到两个递增的截断位

1.首先判断首位是否大于末位 大于的话说明进行了旋转 不大于的话就可以直接输出首位

2.mid赋值 判断mid位的数和low/high之间的关系

3.mid位如果大于low位,low到mid是递增的,low就移到mid后一位

4.mid位如果小于high位,mid到high递增,high移到mid

5.如果都不满足,low就直接后移

6.重复判断过程

import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
        int len=array.length;
        int low=0;
        int high=len-1;
        int mid=0;
        while(low<high){ 
            if(array[low]<array[high]){
                return array[low];
            }
            mid=low+(high-low)/2;
            if(array[mid]>array[low]){
                low=mid+1;
            }
            else if(array[mid]<array[high]){
                high=mid;
            }
            else low++;
        }
    return array[low];
    }
}
全部评论

相关推荐

07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
07-05 16:23
门头沟学院 Java
mengnankk:我投了300,约了5 6个面试。感觉项目写的太多了。一个项目就写五六个亮点,不是把整个项目的功能描述下。其他的没啥,简历看起来有点长
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:35
虽然不怎么光彩,经过这件事,可能我真的要去认同“面试八股文早该淘汰!不会用AI作弊的程序员=新时代文盲!”这句话了
HellowordX:Ai的出现是解放劳动力的,不是用来破坏公平竞争环境的,这样下去,轻则取消所有线上面试,严重了会影响整个行业对所有人产生影响,企业会拉高入职考核各种离谱考核会层出不穷
你找工作的时候用AI吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务