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;   
    }
}

 

 

posted on 2013-05-17 00:18  Alan Yang  阅读(317)  评论(0编辑  收藏  举报