Дан отсортированный по неубыванию слайс a, индекс index одного из его элементов
и число k. Верните k элементов a, наиболее близких по значению к a[index]
(сам a[index] тоже считается — его расстояние ноль). Порядок в ответе любой.
Если на границе несколько элементов одинаково далеки от a[index], подходит любой
из них: ответов может быть несколько, тест проверяет, что ваш ответ — один из
правильных.
// KClosest возвращает k элементов a, ближайших по значению к a[index].
func KClosest(a []int, index, k int) []int
Примеры
KClosest([]int{11, 14, 15, 18, 19}, 2, 3) // [15 14 18]
KClosest([]int{11, 12, 14, 14, 15, 19}, 4, 4) // [12 14 14 15]
KClosest([]int{12, 13, 15, 17, 21}, 3, 2) // [15 17]
KClosest([]int{14, 22, 25, 25, 34}, 1, 3) // [22 25 25]
KClosest([]int{12, 13, 15, 17, 21}, 2, 2) // [13 15] или [15 17]
Ограничения: 1 <= len(a) <= 10^6, -10^9 <= a[i] <= 10^9, 0 <= index < len(a),
0 <= k <= len(a). Функцию вызывают много раз на одном большом массиве с маленьким
k: решение должно работать за O(k), а не O(n). Вход не изменять.
Устно: а если вместо индекса дано произвольное значение x, которого может не
быть в массиве (LeetCode 658)?