题解 | #二分查找#

二分查找

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;
    }
}

全部评论

相关推荐

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