Search a 2D Matrix II
Description
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
- Integers in each row are sorted in ascending from left to right.
- Integers in each column are sorted in ascending from top to bottom.
Example:
Consider the following matrix:
[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ]
Given target = 5
, return true
.
Given target = 20
, return false
.
Solution(javascript)
const searchMatrix = (matrix = [], target) => {
const search = (rowIndex) => {
let low = 0
let high = matrix[rowIndex].length - 1
while (low <= high) {
const middle = Math.floor((low + high) / 2)
const current = matrix[rowIndex][middle]
if (current === target) {
return true
} if (current < target) {
low = middle + 1
} else {
high = middle - 1
}
}
return false
}
for (let i = 0; i < matrix.length; i++) {
if (search(i)) {
return true
}
}
return false
}