题解 | #旋转排列之找出最矮的牛# 二分

旋转排列之找出最矮的牛

https://www.nowcoder.com/practice/ea91217beb83444aa324b86bfab4a952

知识点

二分

思路

首先特判首位两个元素的大小来排除没有移动的情况。

在移动后,数组变成了两段递减的拼接,我们需要找到第一段的末尾,可以使用二分,如果当前的mid元素比首元素要大,那么在mid右端的部分将舍弃。

每次会减少一半的范围。所以时间复杂度为O(logn)

AC Code(C++)

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param heights int整型vector 
     * @return int整型
     */
    int findMin(vector<int>& heights) {
        if (heights[0] >= heights.back()) return heights.back();
        int n = heights.size();
        if (n == 1) return heights[0];
        int l = 0, r = n - 1;
        while (l < r) {
            int mid = (l + r + 1) >> 1;
            if (heights[mid] > heights[0]) r = mid - 1;
            else l = mid;
        }
        return heights[l];
    }
};

全部评论

相关推荐

05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
Gaynes:查看图片
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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