搜索二维矩阵 II

来源:互联网 发布:竞翔通软件 编辑:程序博客网 时间:2024/06/05 22:51

写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。

这个矩阵具有以下特性:

  • 每行中的整数从左到右是排序的。
  • 每一列的整数从上到下是排序的。
  • 在每一行或每一列中没有重复的整数。
样例

考虑下列矩阵:

[

    [1, 3, 5, 7],

    [2, 4, 7, 8],

    [3, 5, 9, 10]

]

给出target = 3,返回 2

解题思路:递增数组,思路为从左下或者右上开始查找。

此题,我从左下开始查找,第一个为3,num++,然后向上移动一行,去掉第三行,

到2,发现比target小,右移一行,去掉第一列。依次移动。

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) {        // write your code here        if(matrix==null||matrix.length==0){            return 0;        }        else if(matrix[0]==null||matrix[0].length==0){            return 0;        }        int row=matrix.length-1;        int col=matrix[0].length-1;        int r=row;        int c=0;        int num=0;        while(r>=0&&c<=col){            if(matrix[r][c]==target){                num++;                r--;            }            else if(matrix[r][c]>target){                r--;            }            else if(matrix[r][c]<target){                c++;            }        }        return num;    }}


原创粉丝点击