Closest Number in Sorted Array
Posted copperface
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.
分析
使用binary Search 找到可以插入 target 的 position, 例如是 i, 那么,从i(包括i)到后面,都是大于等于target的数字
1 如果 i == 0, return i,因为A[i]一定是最接近 target的数字,后面的数字都大于A[i]
2 如果 i > =,那么需要考虑A[i] 和 A[i - 1] 哪个更接近 target,就返回哪一个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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 left = 0 , right = A.length - 1 , mid; while (left < right){ mid = left + (right - left) / 2 ; if (A[mid] < target){ left = mid + 1 ; } else { right = mid; } } // when left == right, this is the first position that target can be insert if (right > 0 && (A[right] - target) > (target - A[right - 1 ])) return right - 1 ; else return right; } } |
以上是关于Closest Number in Sorted Array的主要内容,如果未能解决你的问题,请参考以下文章
[LintCode] 459 Closest Number in Sorted Array
lintcode459- Closest Number in Sorted Array- easy
Closest In Sorted Array - Medium