牛客题霸--二分查找题解

二分查找

https://www.nowcoder.com/practice/7bc4a1c7c371425d9faa9d1b511fe193?tpId=117&&tqId=35030&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking

二分查找

题目链接

Solution

查找数组中第一个大于等于查找值的位置,显然可以二分法做。
因为数组是有序的,所以选取中间的位置,然后判断是否比要找的数大。如果中间的数大于这个数,显然答案在左边,否则在右边。
每次将区间长度缩小一半,故复杂度是

Code

class Solution {
public:
    int upper_bound_(int n, int v, vector<int>& a) {
        int L = 0, R = n - 1, ans = n;
        while (L <= R) {
            int mid = (L + R) / 2;
            if (a[mid] >= v) ans = mid, R = mid - 1;
            else L = mid + 1;
        }
        return ans + 1;
    }
};
全部评论

相关推荐

03-07 17:34
吉林大学 Java
野猪不是猪🐗:说说我的看法: 1. 分布式微服务不是必学的,先把mysql redis spring生态 juc jvm os 计网这些学的差不多,就能应对大部分常规八股。项目直接用单体项目也是可以的 2. 你的学历有优势,后续把外卖做个拓展换皮(或者去吃透一个不那么烂大街的项目),就能够收获不少面试。但重心建议放在八股算法上,项目不必追求高级或独特,但必须吃透,并且要提前准备一些话术,比如技术选型,为什么考虑用a而不是用b 3. 五六月份大厂暑期的难度会下降(因为大佬都选好offer开始释放了,很多甚至都入职了),所以心态要稳住,不要陷入内耗 加油
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务