二分边界法

二分查找

http://www.nowcoder.com/questionTerminal/7bc4a1c7c371425d9faa9d1b511fe193

具体思路就是查找比查找值-1的数字的右边界,也就是查找值的左边界
国际惯例,定义left节点和right节点,最后输出left节点就可以了,具体思路看代码哦,因为牛客题目清奇要求在没有匹配数字的情况下输出数组长度+1,所以写了一个看起来非常low的if函数。。。欢迎提问哦!

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) {
        v = v - 1;
        int left = 0;
        int right = n-1;
        while (left<=right){
            int mid = (left+right)/2;
            if(v>=a[mid]){
                left = mid + 1;
            }else {
                right = mid -1;
            }
        }
        if (left<=n-1){
            return left+1;
        }else {
            return n+1;
        }
    }
}
全部评论
谁能告诉小菜鸡v=v-1;这行的作用是啥嘛
点赞
送花
回复
分享
发布于 2023-07-07 19:59 湖南

相关推荐

3 收藏 评论
分享
牛客网
牛客企业服务