658. Find K Closest Elements
Given a sorted array, two integerskandx, find thekclosest elements toxin the array. The result should also be sorted in ascending order. If there is a tie, the smaller elements are always preferred.
Example 1:
Input:
[1,2,3,4,5], k=4, x=3
Output:
[1,2,3,4]Example 2:
Input:
[1,2,3,4,5], k=4, x=-1
Output:
[1,2,3,4]Note:
The value k is positive and will always be smaller than the length of the sorted array.
Length of the given array is positive and will not exceed 10^4
Absolute value of elements in the array and x will not exceed 10^4
Thoughts:
Binary -searching the first index i that arr[i] is closer or equally close to arr[i+k] (Original Post)
Binary-searching for
xand then expanding to the left and to the right: The idea is to find the first number which is equal to or greater thanxinarr. Then, we determine the indices of the start and the end of a subarray inarr, where the subarray is our result. The time complexity isO(logn + k).
Code: Binary -searching for the first index i T: O(log(n-k))
Python: T: O(log(n-k))
Code 2: Reference T: O(log(n)+k)
Last updated
Was this helpful?