Closest|Closest Number in Sorted Array

题目描述
Given a target number and an integer array A sorted in ascending order, find the indexiin A such that A[i] is closest to the given target.
Return -1 if there is no element in the array.
Notice
There can be duplicate elements in the array, and we can return any of the indices with same value.
Example
Given[1, 2, 3]and target =2, return1.
Given[1, 4, 6]and target =3, return1.
Given[1, 4, 6]and target =5, return1or2.
Given[1, 3, 3, 4]and target =2, return0or1or2.
【Closest|Closest Number in Sorted Array】代码

public class Solution { /** * @param A an integer array sorted in ascending order * @param target an integer * @return an integer */ public int closestNumber(int[] A, int target) { // Write your code here if (A == null || A.length == 0) { return -1; }int start = 0; int end = A.length - 1; while (start + 1 < end) { int mid = start + (end - start) / 2; if(target== A[mid]) { return mid; } else if (target < A[mid]) { end = mid; } else { start = mid; } }return (Math.abs(A[start] - target) < Math.abs(A[end] - target)) ? start : end; } }

    推荐阅读