首页 > 代码库 > Search a 2D Matrix II

Search a 2D Matrix II

矩阵非图题, 常根据题意找特点, 遍历, 判断, 不同的情况, 

Write an efficient algorithm that searches for a value in an m x n matrix, return the occurrence of it.

This matrix has the following properties:

Integers in each row are sorted from left to right.
Integers in each column are sorted from up to bottom.
No duplicate integers in each row or column.
Have you met this question in a real interview? Yes
Example
Consider the following matrix:

[
  [1, 3, 5, 7],
  [2, 4, 7, 8],
  [3, 5, 9, 10]
]
Given target = 3, return 2.

Challenge 
O(m+n) time and O(1) extra space

Tags 
Sorted Matrix Matrix Google
Related Problems 
Easy Search a 2D Matrix

 

public int searchMatrix(int[][] matrix, int target) {
        // write your code here
        if(matrix.length == 0 || matrix[0].length == 0){
            return 0;
        }
        
        int m = matrix.length - 1, n = matrix[0].length - 1;
        int count = 0;
        int i = m, j = 0;
        
        while (i >= 0 && j <= n){
            if (matrix[i][j] == target) {
                count++;
                i--;
                j++;
            } else if (matrix[i][j] < target){
                j++; 
            } else {
                i--;
            }
        }
        
        return count;
    }

  

Search a 2D Matrix II