美文网首页计算机
Ceiling and floor of one array a

Ceiling and floor of one array a

作者: Richardo92 | 来源:发表于2016-09-22 10:19 被阅读1次

    下面介绍两个子问题。

    给定一个 nums[]. target, 求 该数组中,大于等于target的最小值的index

    private int ceil(int[] nums, int target) {
        int begin = 0;
        int end = nums.length - 1;
        while (begin <= end) {
            int mid = begin + (end - begin) / 2;
            if (nums[mid] > target) {
                end = mid - 1;
            }
            else if (nums[mid] < target) {
                begin = mid + 1;
            }
            else {
                return mid;
            }
        }
    
        return begin;
    }
    

    求小于等于target 的最大数的index

    private int floor(int[] nums, int target) {
        int begin = 0;
        int end = nums.length - 1;
        while (begin <= end) {
            int mid = begin + (end - begin) / 2;
            if (nums[mid] > target) {
                end = mid - 1;
            }
            else if (nums[mid] < target) {
                begin = mid + 1;
            }
            else {
                return mid;
            }
        }
        return end;
    }
    

    感觉会经常用,记住了。

    相关文章

      网友评论

        本文标题:Ceiling and floor of one array a

        本文链接:https://www.haomeiwen.com/subject/enkzettx.html