设为首页 加入收藏

TOP

Leetcode12: Search a 2D Matrix
2015-11-21 01:04:22 来源: 作者: 【 】 浏览:1
Tags:Leetcode12: Search 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.

    这是一个杨氏矩阵,即每一行是递增的,每一列也是递增的。根据递增性质,我们对每一行只搜索最后一个数,如果小于target那么前往下一行,如果大于target那么说明在这一行,于是前往前一列,直到找到该数。

    ?

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

    ?

    ?

    这道题难度是medium,本来我打算先把easy难度的做完在考虑中等难度的。偶然看了七月算法的视频(排序查找实战),受益匪浅,决定对讲过的例题进行巩固消化,于是先把这道题做了,算法思路来源于曹博,学习了!
    ?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 3572 Task Schedule 最大流 D.. 下一篇ZZULIOJ 1726: 迷宫

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: