Вам дан матричный мат, отсортированный по строкам размера 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
Это вопрос, который я пытаюсь решить с помощью двоичного поиска. Ниже приведен код, который я написал, но он способен пройти только некоторые тестовые случаи и показать неправильный ответ в других случаях. Я не могу определить, допустил ли я какую-то логическую ошибку или мой код не работает в крайних случаях.
Код: Выделить всё
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]