Бинарный поиск: ближайшие 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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