> For the complete documentation index, see [llms.txt](https://rachel2011.gitbook.io/leetcode_cc150/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://rachel2011.gitbook.io/leetcode_cc150/binary-search/closest-number-in-sorted-array.md).

# Closest Number in Sorted Array

Given a target number and an integer array A sorted in ascending order, find the index`i`in A such that A\[i] is closest to the given target.

Return -1 if there is no element in the array.

**Example**

Given`[1, 2, 3]`and target =`2`, return`1`.

Given`[1, 4, 6]`and target =`3`, return`1`.

Given`[1, 4, 6]`and target =`5`, return`1`or`2`.

Given`[1, 3, 3, 4]`and target =`2`, return`0`or`1`or`2`.

## 分析：

## 主要注意一下最后选择start还是end的事就行

```
class Solution:
    # @param {int[]} A an integer array sorted in ascending order
    # @param {int} target an integer
    # @return {int} an integer
    def closestNumber(self, A, target):
        # Write your code here
        if len(A)==0:
            return -1
        start = 0
        end = len(A)-1
        while start+1 < end:
            mid= (start+end)/2
            if target>A[mid]:
                start = mid
            else:
                end=mid
        if target<=A[start]:
            return start
        elif target >= A[end]:
            return end
        else:
            if target-A[start] >=A[end]-target:
                return end
            else:
                return start
```
