Search a 2D Matrix II

来源:互联网 发布:java file类绝对路径 编辑:程序博客网 时间:2024/06/07 15:21

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.

public class Solution {    /**     * @param matrix: A list of lists of integers     * @param: A number you want to search in the matrix     * @return: An integer indicate the occurrence of target in the given matrix     */    public int searchMatrix(int[][] matrix, int target) {        // check corner case        if (matrix == null || matrix.length == 0) {            return 0;        }        if (matrix[0] == null || matrix[0].length == 0) {            return 0;        }        // from bottom left to top right        int n = matrix.length;        int m = matrix[0].length;        int x = n - 1;        int y = 0;        int count = 0;//从左下角开始搜索   比较好判断        while (x >= 0 && y < m) {            if (matrix[x][y] < target) {                y++;            } else if (matrix[x][y] > target) {                x--;            } else {                count++;                x--;                y++;            }        }        return count;    }}
0 0
原创粉丝点击