lintcode 搜索二维矩阵

Posted 狗剩的美丽家园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lintcode 搜索二维矩阵相关的知识,希望对你有一定的参考价值。

题目:搜索二维矩阵 

描述:

写出一个高效的算法来搜索 m × n矩阵中的值。

这个矩阵具有以下特性:

  • 每行中的整数从左到右是排序的。
  • 每行的第一个数大于上一行的最后一个整数。

样例

考虑下列矩阵:

[
  [1, 3, 5, 7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]

给出 target = 3,返回 true

-------------------------------------------

开始用两个二分搜索,先找列,再找行。运行后提示超时。。。

 1 class Solution {
 2 public:
 3     /**
 4      * @param matrix, a list of lists of integers
 5      * @param target, an integer
 6      * @return a boolean, indicate whether matrix contains target
 7      */
 8     bool searchMatrix(vector<vector<int> > &matrix, int target) {
 9         // write your code here
10         if (matrix.empty()) {
11             return 0;
12         }
13         int i = 0;
14         int j = matrix[0].size() - 1;
15         while (i < matrix.size() && j >= 0) {
16             int curr = matrix[i][j];
17             if (target == curr) {
18                 return 1;
19             } else if (curr < target) {
20                 i++;
21             } else {
22                 j--;
23             }
24         }
25         return 0;
26     }
27 };

 

以上是关于lintcode 搜索二维矩阵的主要内容,如果未能解决你的问题,请参考以下文章

lintcode_28.搜索二维矩阵

搜索二维矩阵

lintcode:被围绕的区域

代码题(36)— 搜索二维矩阵

LintCode 单词搜索Ⅱ 字典树

java刷题--74搜索二维矩阵