Получение неправильного ответа в решении двоичного поискаJAVA

Программисты JAVA общаются здесь
Anonymous
Получение неправильного ответа в решении двоичного поиска

Сообщение Anonymous »

Постановка задачи
Вам дан матричный мат, отсортированный по строкам размера m * n, где m и n — номера строк и столбцов матрицы соответственно.
Ваша задача — найти и вернуть медиану матрицы.
Примечание : m и n всегда будут нечетными.
Пример:

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

Input: n = 5, m = 5
mat = [
[ 1, 5, 7, 9, 11 ],
[ 2, 3, 4, 8, 9 ],
[ 4, 11, 14, 19, 20 ],
[ 6, 10, 22, 99, 100 ],
[ 7, 15, 17, 24, 28 ]
]

Output: 10
Пояснение: Если расположить элементы матрицы в отсортированном порядке в массиве, они будут такими

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

1 2 3 4 4 5 6 7 7 8 9 9 10 11 11 14 15 17 19 20 22 24 28 99 100
Итак, медиана равна 10, что соответствует индексу 12, что находится посередине, поскольку общее количество элементов равно 25, поэтому 12-й индекс равен ровно посередине. Следовательно, ответ будет 10.
Это вопрос, который я пытаюсь решить с помощью двоичного поиска. Ниже приведен код, который я написал, но он способен пройти только некоторые тестовые случаи и показать неправильный ответ в других случаях. Я не могу определить, допустил ли я какую-то логическую ошибку или мой код не работает в крайних случаях.

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

import java.util.Arrays;

public final class Solution {
public static int findMedian(int matrix[][], int m, int n) {
// Write your code here
int[] pos= findPos(matrix,m,n);
int req=(m*n)/2;
while (pos[0]=req){
pos[1]=mid-1;
}else{
pos[0]=mid+1;
}
}
return pos[0];
}
public static int blackbox(int matrix[][], int m, int n, int mid){
int cnt=0;
for (int i = 0; i < m; i++) {
int low=0;
int high=n-1;
while(low

Подробнее здесь: [url]https://stackoverflow.com/questions/78242410/getting-wrong-answer-in-binary-search-solution[/url]

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