1. 程式人生 > >查詢有序陣列中相近的數或下標【JAVA實現】

查詢有序陣列中相近的數或下標【JAVA實現】

刷LeetCode過程中遇到的一個知識點,特此記錄~

給定一個有序陣列與目標值,陣列中不一定有目標值,找出與目標值最相近的數的下標

private int findTarget(int[] nums, int lo, int hi, int target) {
        //如果只有一個元素可選,那就直接返回該元素
        if(lo == hi) {
            return lo;
        }

        int middle = 0;
        while (lo < hi) {
            middle = (lo + hi) / 2;
            if (target == nums[middle]) {
                return middle;
            } else if (Math.abs(target - nums[middle]) > Math.abs(target - nums[middle + 1])) {
                lo = middle + 1;
            }else{
                hi = middle - 1;
            }
        }

        return Math.abs(target - nums[middle]) > Math.abs(target - nums[middle + 1]) ? (middle + 1) : middle;
    }