题目

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

示例:

现有矩阵 matrix 如下:

[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]

给定 target = 5,返回 true。

给定 target = 20,返回 false。

思路

【剑指Offer】面试题04.二维数组中的查找

每次从右上角开始查找:

  1. 若右上角数大于target,由于有序特性,则该列数都大于target,所以排除该列所有数;
  2. 如果右上角数小于target,由于有序特性,则改行数都小于target,所以排除该行所有数;
  3. 如果相等,则找到并停止查找。

注意:判断空值

代码

class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
//边界值
if (matrix.size() == 0 || matrix[0].size() == 0) {
return false;
}
int row = matrix.size(), col = matrix[0].size();
int i = 0, j = col - 1;
while (i < row && j >= 0) {
if (matrix[i][j] == target) {
return true;
} else if (matrix[i][j] < target) {
++i;
} else if (matrix[i][j] > target) {
--j;
}
}
return false;
}
};

最新文章

  1. 从零开始编写自己的C#框架(27)——什么是开发框架
  2. 关于XE10下Indy发送字符串编码的问题
  3. java 运算符使表达式结果类型自动提升
  4. VC++常用函数
  5. TestLink测试软件安装条件检查不通过的解决方案
  6. robots
  7. Ubuntu 针对 SSD 的优化方案
  8. 对C语言中va_list,va_start,va_arg和va_end的一点理解
  9. [译]再次对比TCP与UDP
  10. hdu1864 最大报销额(01背包)
  11. java笔试题13-11-21
  12. 数据结构(左偏树,可并堆):BNUOJ 3943 Safe Travel
  13. linux的du和df命令
  14. php get_called_class()函数与get_class()函数的区别
  15. Python自动化--语言基础2--运算符、格式化输出、条件语句、循环语句、列表、元组
  16. Centos6.5系统关闭防火墙
  17. jvisualvm 连接 jstatd 远程监控 jvm 或 Visual GC提示&quot;不受此JVM支持“
  18. Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name:
  19. WCF:一个棘手的问题
  20. 你可能没听过的11个Python库

热门文章

  1. HTML相关知识点(2)
  2. RTL级低功耗设计
  3. JS中的鼠标移入移除监控操作
  4. 【深入】 - AST抽象语法树
  5. 45 孩子们的游戏(圆圈中最后剩下的数) + list操作总结+ for_each多记忆容易忘记
  6. 前端学习笔记系列一:10整体移动vscode代码块、VSCode 使用 stylus,配置格式化设置、在vue项目中引入bootstrap
  7. 几道经典的SQL笔试题目
  8. 在Ubuntu下如何压缩一个文件夹
  9. GNS3 模拟DHCP之地址请求
  10. 动态设置html根字体大小(随着设备屏幕的大小而变化,从而实现响应式)