文章目录

  • 1 题目理解
  • 2 二分

1 题目理解

输入:一个mxn的int数组matrix,这个数组每一行按照从小到大排序,并且下一行的第一个值大于上一行的最后一个值。一个int值target
返回:target在matrix中是否存在。存在返回true。

2 二分

我们可以把这个数组看做是一个有序数组。数组下表从0到m*n-1。

class Solution {public boolean searchMatrix(int[][] matrix, int target) {if(matrix==null || matrix.length==0 || matrix[0].length==0) return false;int l = 0;int r = matrix.length*matrix[0].length-1;int cols = matrix[0].length;while(l<=r){int m = l + ((r-l)>>1);int row = m/cols;int col = m%cols;if(matrix[row][col]==target) return true;if(matrix[row][col]>target){r = m - 1;}else{l = m + 1;}}return false;}
}

也可以先在第一列查找,找到最小的比target大的元素,所在的行l,然后在l-1行查找target是否存在。

class Solution {public boolean searchMatrix(int[][] matrix, int target) {if(matrix == null || matrix.length==0 || matrix[0].length==0) return false;int m = matrix.length;int n = matrix[0].length;//先在第一列找,l是nums[l]>target的最小值int l = 0, r = m-1;while(l<=r){int middle = l+((r-l)>>1);if(matrix[middle][0] == target) return true;if(matrix[middle][0]>target){r = middle-1;}else{l = middle+1;}}if(l>0){int line = l-1;//在line这一行查找l = 0;r = n-1;while(l<=r){int middle = l +((r-l)>>1);if(matrix[line][middle]==target) return true;if(matrix[line][middle]>target){r = middle-1;}else{l = middle+1;}}return false;}else{return false;}}
}

74. Search a 2D Matrix相关推荐

  1. 【LeetCode 剑指offer刷题】矩阵题1:4 有序矩阵中的查找( 74. Search a 2D Matrix )(系列)...

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 74. Search a 2D Matrix Write an efficient algorithm that s ...

  2. LeetCode 74. Search a 2D Matrix

    LeetCode 74. Search a 2D Matrix Solution1:我的答案 <剑指offer>原题 class Solution { public:bool search ...

  3. leetcode 74 java_【LeetCode】74. Search a 2D Matrix

    问题描述 Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the ...

  4. 74. Search a 2D Matrix (Graph; Divide-and-Conquer)

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  5. Array | 74. Search a 2D Matrix

    题目:搜索二维矩阵 方法1: class Solution { public:bool searchMatrix(vector<vector<int>>& matrix ...

  6. [Leetcode] 74. Search a 2D Matrix 解题报告

    题目: Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the f ...

  7. LeetCode 240. Search a 2D Matrix II

    LeetCode 240. Search a 2D Matrix II Solution1: 为什么把第74题的代码改都不用改的拿过来就可以AC,一脸懵逼啊... class Solution { p ...

  8. LeetCode 74. Search a 2D Matrix--有序矩阵查找--python,java,c++解法

    题目地址:Search a 2D Matrix - LeetCode Write an efficient algorithm that searches for a value in an m x ...

  9. LeetCode: Search a 2D Matrix

    少数次过 1 class Solution { 2 public: 3 bool searchMatrix(vector<vector<int> > &matrix, ...

最新文章

  1. Spring中jdbcTemplate的用法实例
  2. 计科1高雨妍作业(1)
  3. python-如何解决python执行pip install 命令的时候出现 File“<stdin>“,line 1 pip install XXX的问题
  4. PE文件结构 - 数据目录表学习
  5. 队列 和 线程 之GCD dispatch
  6. java 覆盖和隐藏_Java方法的覆盖与隐藏的区别分析
  7. 在图像中截取小图并保存
  8. 计算机如何驱动无线网络,win7如何安装无线网卡驱动 安装无线网卡驱动的方法...
  9. 使用mysqldump备份
  10. 一主多备几影响 oracle,Oracle 10g 一主多备的搭建技巧
  11. python web 文件管理_我的第一个python web开发框架(23)——代码版本控制管理与接口文档...
  12. EDA技术实用教程 | 复习四 | 标识符、关键字和规范的书写格式
  13. C# 通过api 下载sharepoint中的文件
  14. QQ心跳包格式分析 监听局域网QQ号代码
  15. 北京市基本医疗保险定点医院名单
  16. 【LearnOpenGL】-PBR材质
  17. html5 骰子滚动,CSS3画一个滚动的骰子
  18. 测试双方距离的软件,有没有可以测量距离的app
  19. python画笔速度调为最高_【python入门系类课程 第三课 神奇的画笔】
  20. 使用ping测试MTU值

热门文章

  1. 2017-06-19 (cp mkdir rm 运行级别及修改)
  2. RocketMQ初步应用架构理论
  3. PHP 通过设置P3P头来实现跨域访问COOKIE
  4. 调用IOS邮件系统发送邮件
  5. asp.net如何生成图片验证码
  6. YII2 服务器验证码不显示
  7. ug建模文本怎么竖着_入门到成为UG编程高手,这些步骤你不得不了解
  8. Mysql中int(M)的含义
  9. 服务器imm口加载硬盘,ibm x3250 M4如何进IMM(远程管理口)
  10. Linux 内核编码风格【转】