Search a 2D Matrix

来源:互联网 发布:jsp调用java方法 编辑:程序博客网 时间:2024/06/13 16:39

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.

写一个高效算法搜索m*n矩阵。矩阵有一下特点:

整数从左到右不断增大,每一行的第一个整数大于前一行的最后一个整数。

这道题可以用二分法,时间复杂度为O(logm+logn);也可以直接用矩阵特点搜索,时间复杂度为O(m+n),代码如下:

class Solution {public:    bool searchMatrix(vector<vector<int> > &matrix, int target) {        int m=matrix.size();        int n=matrix[0].size();        int r=0,c=n-1;        while(r<m && c>=0)        {            if(matrix[r][c]==target) return true;            else if(matrix[r][c]>target) c--;            else r++;        }        return false;    }};


0 0
原创粉丝点击