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

旋转数组的最小数字

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

  1. 旋转数组由一个递增数组生成,所以一边的数组的元素会大于另一边数组的任意元素。所以当mid<right时mid和right在同一数组中,或者mid是元素小的一方时,搜索左边(包含mid),反之,mid>right 时,mid和right在不同数组,且right所在的数组必然是最小数组,故搜索右边 。 如果两者相等就去掉right 继续搜索。
```class Solution {
public:
    int minNumberInRotateArray(vector<int> rotateArray) {
        int left = 0, right = rotateArray.size() - 1;
        while(left < right)
        {
            int mid = (left + right) >> 1; //取中间值
            if(rotateArray[mid] > rotateArray[right])  left = mid + 1; //搜索右边
            else if(rotateArray[mid] < rotateArray[right])  right = mid; //搜索左边
            else right--; //继续搜索左边
        }
        return rotateArray[left];
    }
};
全部评论
按序排列的拦腰斩断,一头一尾肯定是相邻的两个数,自然一小一大(起码也是相等,因为非呈下降趋势)
点赞 回复 分享
发布于 2022-10-18 21:15 上海
因为他是把若干个前面的数搬到后面,数组是递增的,所以数组前面的数小于后面的
点赞 回复 分享
发布于 2022-04-19 21:09
旋转数组由一个递增数组生成,所以一边的数组的元素会大于另一边数组的任意元素.这句话为什么啊
点赞 回复 分享
发布于 2022-04-19 19:58

相关推荐

05-14 16:55
广州大学 Java
面试情况25届双非本科,有&nbsp;ACM&nbsp;竞赛经历,两段实习(小厂&nbsp;+&nbsp;独角兽)。以下为2024年11月到次年5月的春招及其补录面试情况,若对个人秋招经历感兴趣,可查看另一篇置顶文章。通过某区级供水国企汇丰科技:线上行为测评&nbsp;→&nbsp;Coding&nbsp;测试&nbsp;→&nbsp;线下技术&nbsp;&amp;&nbsp;HR&nbsp;面东方财富:一、二轮线上面,三轮线下技术面招银科技:一轮线上技术,二轮、三轮线下技术和HR元戎启行:三轮技术面&nbsp;+&nbsp;HR&nbsp;面,一共四面面试挂拼多多:客户端,三轮技术面挂,手撕没撕出来4399:一轮技术面挂微派:一轮技术面挂,手撕没撕出来以下是个人无意向故提前主动终止流程,以免影响其他候选人广州农商银行:线下笔试,一轮面试...
isjsns:同双非本,最后的总结那块挺赞同的,我们计院的就业数据也就那样,年包二十到四十万的人也有,但少之又少,周围有认识的地信和电子的也有二到四十万的,找的还不错的包括我基本都是春招才找到的,个人是感觉春招机会挺多的,也可能是像楼主一样年初又找了个实习加技术又沉淀了一波的原因,本来秋招结束都想摆了,最后还是熬出来了大家别放弃啊,双非本也有翻身的机会的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务