Search a 2D Matrix
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 from left to right.
- The first integer of each row is greater than the last integer of the previous row.
For example,
Consider the following matrix:
[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]
Given target = 3
, return true
.
public class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix == null || matrix.length == 0)
return false;
int m = matrix.length;
int n = matrix[0].length;
if(target < matrix[0][0] || target > matrix[m-1][n-1])
{
return false;
}
int row = 0;
int col = n-1;
while (row <= m-1 && col >= 0)
{
if (matrix[row][col] < target)
row++;
else if (matrix[row][col] > target)
col--;
else
return true;
}
return false;
}
}