查詢有序陣列中相近的數或下標【JAVA實現】
阿新 • • 發佈:2018-12-26
刷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; }