classFindClosestElements:"""
658. 找到 K 个最接近的元素
https://leetcode.cn/problems/find-k-closest-elements/description/
"""defsolution(self, arr: List[int], k:int, x:int)-> List[int]:
p = self.left_bound(arr, x)
res =[]
l, r = p -1, p
while r - l -1< k:if l ==-1:
res.append(arr[r])
r +=1elif r ==len(arr):
res.insert(0, arr[l])
l -=1elif x - arr[l]> arr[r]- x:
res.append(arr[r])
r +=1else:
res.insert(0, arr[l])
l -=1return res
defleft_bound(self, arr: List[int], x:int)->int:
l, r =0,len(arr)while l < r:
mid = l +(r - l)//2if arr[mid]>= x:
r = mid
else:
l = mid +1return l