Бинарный поиск: ближайшие K элементовJAVA

Программисты JAVA общаются здесь
Anonymous
Бинарный поиск: ближайшие K элементов

Сообщение Anonymous »

Я пытался решить проблему Leetcode «найти K ближайших K элементов в отсортированном массиве», используя подход двоичного поиска, но не смог понять, почему он не работает.
LeetCode Проблема Ссылка:
текст
Описание проблемы:
дан отсортированный целочисленный массив arr , два целых числа k и x, возвращают k ближайшие целые числа к x в массиве. Результат также следует отсортировать по возрастанию.
Целое число a ближе к x, чем целое число b, если: Пример 1:< /p>
Ввод: arr = [1,2,3,4,5], k = 4, x = 3
Выход: [1,2,3,4]
Попытался написать программу для решения K ближайших чисел в отсортированном массиве:
Программа гарантирует, что она никогда не перезапишет лучшее решение, найденное на данный момент, путем введения переменной минимумаDiff:

Код: Выделить всё

    public List findClosestElements(int[] arr, int k, int x) {
int startIndex = 0;
int low = 0;
int high = arr.length - k;
int mid = -1;
int minimumDiff = Integer.MAX_VALUE;
int diff = 0;
while(low  arr[mid + k] - x)) {
low = mid + 1;
diff = x - arr[mid];
}else {
high = mid - 1;
diff = arr[mid + k] - x;
}
if(minimumDiff > diff) {
minimumDiff = diff;
startIndex = mid;
}
}
List nearestKElements = new ArrayList();
for(int i=startIndex; i

Подробнее здесь: [url]https://stackoverflow.com/questions/79093332/binary-search-nearest-k-elements[/url]

Вернуться в «JAVA»