网站搜索栏怎么做南京关键词优化软件
题目描述
请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
输入
5,4,[1,2,4,4,5]
返回值
3
题解
关于二分查找算法的详解,可参考这篇
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) {// write code hereint left = 0;int right = n;while (left < right) {int mid = left + ((right - left) >> 1);if (a[mid] < v) {left = mid + 1;} else if (a[mid] >= v) {right = mid;}}return left < n ? left + 1 : n + 1;}
}