二分---java

二分查找

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

    首先判断有没有解,如果目标值小于数组最后一个数,那么一定有解。
    改变二分查找,如果mid大于等于于目标值,可能我们的这个mid是最优的可能不是,左边还有,那么我们选择的范围就是【start,mid】,最后得到结果。

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 here
        if(v>a[n-1]){
            return n+1;
        }
        int start = 0;
        int end = n-1;
        int mid=start+(end-start)/2;
        while(start < end){
            if(a[mid]>=v){
                end = mid;
            }else{
                start = mid+1;
            }
            mid = start+(end-start)/2;
        }
        return mid+1;
    }
}


全部评论

相关推荐

水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
彧未sr:查看图片
投递牧原集团等公司7个岗位
点赞 评论 收藏
分享
华子别追了,我害怕了,每天手机提示音一响我就知道你又来了
徐凤年555:直接屏蔽了就行,真的太离谱了,感觉一万个hr
点赞 评论 收藏
分享
评论
8
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务