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.
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.
分析:
主要注意一下最后选择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 startLast updated
Was this helpful?