题解 | #二分查找#

二分查找

https://www.nowcoder.com/practice/7bc4a1c7c371425d9faa9d1b511fe193

import java.util.*;
public class Solution {
    /**
     * 二分查找
     * @param n int整型 数组长度
     * @param v int整型 查找值
     * @param a int整型一维数组 有序数组
     * @return int整型
     */
//类似于求数组中第一个相等的数
    public int upper_bound_ (int n, int v, int[] a) {
        
        if (n == 0 || a[n - 1] < v)return n + 1;

        int left = 0, right = n - 1, mid = 0;
        while (left < right) {

            mid =  (left+right)/2;
		  //目标值大于中间值  所以中间值的左索引往右边遍历,所以得+1
            if (v>a[mid]) {
                left=mid+1;
            } else {
                right=mid;
            }
        }
        return right + 1;
    }
}

全部评论

相关推荐

05-07 13:29
已编辑
门头沟学院 Java
北斗导航Compass低仿版:能不能先搞清楚优先级啊,怎么可能是项目问题,项目很重要吗?又没学历 又没实习大厂凭啥约面?那玩具项目 没应用在真实生产环境下的 就算做上天又有什么用?早点找个小公司实习 拿小公司实习去投大厂实习,这才是你现在该做的
投递美团等公司10个岗位 简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务