74. Поиск в двумерной матрице (Medium) (https://leetcode.com/problems/search-a-2d-matrix/)
Дан двумерный целочисленный массив matrix размером m x n и целое число target. Определите, содержится ли target в матрице. Ограничения на матрицу: - Каждая строка отсортирована в неубывающем порядке - Первый элемент каждой строки больше последнего элемента предыдущей строки. Верните true, если target найден, и false в противном случае. Задача: добиться временной сложности O(log(m * n)). Ограничения: - 1 <= m, n <= 100 - -10000 <= matrix[i][j], target <= 10000
function searchMatrix(matrix: number[][], target: number): boolean {
let lo = 0,
n = matrix[0].length,
hi = matrix.length * n - 1
while (lo <= hi) {
const mid = lo + Math.floor((hi - lo) / 2),
row = Math.floor(mid / n),
col = mid % n,
curr = matrix[row][col]
if (curr === target) return true
else if (curr > target) {
hi = mid - 1
} else {
lo = mid + 1
}
}
return false
}
// Local check:
console.log(
searchMatrix(
[
[1, 2, 4, 8],
[10, 11, 12, 13],
[14, 20, 30, 40],
],
10,
),
)
console.log(
searchMatrix(
[
[1, 2, 4, 8],
[10, 11, 12, 13],
[14, 20, 30, 40],
],
15,
),
)Example 1:
Input: matrix = [[1,2,4,8],[10,11,12,13],[14,20,30,40]], target = 10
Output: true
Example 2:
Input: matrix = [[1,2,4,8],[10,11,12,13],[14,20,30,40]], target = 15
Output: false