0%
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 28 29 30 31
| class Solution: def findClosestElements(self, arr: List[int], k: int, x: int) -> List[int]: n = len(arr) def search_II(x): left = 0 right = n-1 while left<=right: mid = (left+right)>>1 if arr[mid]>=x: right = mid-1 elif arr[mid]<x: left = mid+1 return right+1 print("x 的位置是",search_II(x)) def find_near(index,k): left,right = index,index+1 nearest = [] arr.insert(0,-10**8) arr.append(10**8) for i in range(k): if x-arr[left]<=arr[right]-x: nearest += [arr[left]] left -= 1 elif arr[right]-x < x-arr[left]: nearest += [arr[right]] right += 1 return sorted(nearest)
x_index = search_II(x) return find_near(x_index,k)
|