# Find k closest elements

September 8, 2022

heapProblem URL: Find k closest elements

We will iterate over our input array, find the absolute diffrece of each elements form target x, and put them into a heap alogn with the actual number. Then we pop k numbers from the heap, sort the values and return them as result.

```
class Solution:
def findClosestElements(self, arr: List[int], k: int, x: int) -> List[int]:
heap = []
for i in range(len(arr)):
diff = abs(x-arr[i])
heapq.heappush(heap, (diff, arr[i]))
res = []
while k:
diff, val = heapq.heappop(heap)
res.append(val)
k -= 1
return sorted(res)
```

Time Complexity: `O(nlog(k))`

Space Complexity: `O(n)`