Comparto mi intento en JS :]
function searchInMatrix(matrix, target) {
let up = 0, left = 0;
let down = matrix.length - 1, right = matrix[up].length - 1;
let half, selectedRow;
while (up <= down) { // Busqueda por columna
half = Math.floor(up + (down - up) / 2);
if (up == down) {
selectedRow = up;
break;
}
if (matrix[up][right] <= target && matrix[half][right] < target)
up = half+1;
else
down = half;
}
while (left <= right) { // Busqueda por fila
half = Math.floor(left + (right - left) / 2);
if (matrix[selectedRow][half] < target)
left = half + 1; //: Descartamos mitad izq.
else
right = half - 1; //: Descartamos mitad der.
if (matrix[selectedRow][half] == target)
return true
}
return false;
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?