74. Search a 2D Matrix
文章目录
- 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相关推荐
- 【LeetCode 剑指offer刷题】矩阵题1:4 有序矩阵中的查找( 74. Search a 2D Matrix )(系列)...
[LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 74. Search a 2D Matrix Write an efficient algorithm that s ...
- LeetCode 74. Search a 2D Matrix
LeetCode 74. Search a 2D Matrix Solution1:我的答案 <剑指offer>原题 class Solution { public:bool search ...
- 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 ...
- 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 ...
- Array | 74. Search a 2D Matrix
题目:搜索二维矩阵 方法1: class Solution { public:bool searchMatrix(vector<vector<int>>& matrix ...
- [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 ...
- LeetCode 240. Search a 2D Matrix II
LeetCode 240. Search a 2D Matrix II Solution1: 为什么把第74题的代码改都不用改的拿过来就可以AC,一脸懵逼啊... class Solution { p ...
- 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 ...
- LeetCode: Search a 2D Matrix
少数次过 1 class Solution { 2 public: 3 bool searchMatrix(vector<vector<int> > &matrix, ...
最新文章
- Spring中jdbcTemplate的用法实例
- 计科1高雨妍作业(1)
- python-如何解决python执行pip install 命令的时候出现 File“<stdin>“,line 1 pip install XXX的问题
- PE文件结构 - 数据目录表学习
- 队列 和 线程 之GCD dispatch
- java 覆盖和隐藏_Java方法的覆盖与隐藏的区别分析
- 在图像中截取小图并保存
- 计算机如何驱动无线网络,win7如何安装无线网卡驱动 安装无线网卡驱动的方法...
- 使用mysqldump备份
- 一主多备几影响 oracle,Oracle 10g 一主多备的搭建技巧
- python web 文件管理_我的第一个python web开发框架(23)——代码版本控制管理与接口文档...
- EDA技术实用教程 | 复习四 | 标识符、关键字和规范的书写格式
- C# 通过api 下载sharepoint中的文件
- QQ心跳包格式分析 监听局域网QQ号代码
- 北京市基本医疗保险定点医院名单
- 【LearnOpenGL】-PBR材质
- html5 骰子滚动,CSS3画一个滚动的骰子
- 测试双方距离的软件,有没有可以测量距离的app
- python画笔速度调为最高_【python入门系类课程 第三课 神奇的画笔】
- 使用ping测试MTU值