二分法,先对行二分找出结果可能存在的行,再对这一行二分查找。O(Log m+Log n),m、n分别为矩阵的高和宽。

 class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
//二分,先找可能存在的行,再在行里二分找数
if(matrix.empty() or matrix[].empty()){return false;}
int m=matrix.size(),n=matrix[].size();
int row_le=,row_ri=m-,row_mi;
while(row_le<row_ri){
row_mi=row_le+(row_ri-row_le)/;
if(matrix[row_mi][]>target){
row_ri=row_mi;
}
else if(matrix[row_mi][n-]<target){
row_le=row_mi+;
}
else{
row_le=row_ri=row_mi;
}
}
int le=,ri=n-,mi;
while(le<ri){
mi=le+(ri-le)/;
if(matrix[row_le][mi]<target){
le=mi+;
}
else{
ri=mi;
}
}
return matrix[row_le][le]==target;
}
};

评论区的:O(m+n), m、n分别为矩阵高和宽,更简洁,尽管牺牲了复杂度。

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

最新文章

  1. Linux编译源码的方式安装Qt4开发环境(基于Ubuntu系统)
  2. Objective-C如何对内存管理的?
  3. sqlserverJDBC驱动链接
  4. &#39;Could not load NIB in bundle: &#39;NSBundle xxx/storeFlix.app&gt; &#39; with name &#39;UIViewController-w6Q-ra-j06&#39; and directory &#39;StoreFlixIpad.storyboardc
  5. HBase 实战(1)--HBase的数据导入方式
  6. 网络流(最大流) POJ 1637 Sightseeing tour
  7. Intellij Idea 12 加载weblogic8X的插件
  8. 模拟Spring依赖注入
  9. linux下面安装配置mongoDB
  10. 理解JavaScript原型
  11. Install Centrifugo and quick start
  12. Spring Boot 2.0 的快速入门(图文教程)
  13. oracle追加表空间
  14. css 清除浮动的几种方式
  15. django 网站的搭建(2)
  16. 1.2、CDH 搭建Hadoop在安装之前(CDH基于包的安装所需的权限)
  17. 自己在完第一遍STL和Directx 9.0 游戏开发编程基础书后的体会
  18. How to execute sudo command in remote host via SSH
  19. 洛谷 P1347 排序
  20. Ubuntu-18.04 下修改root用户密码,安装SSH服务,允许root用户远程登录,安装vsftp服务器

热门文章

  1. 清北学堂—2020.1提高储备营—Day 2 morning(并查集、堆)
  2. 在csv表格中修改/追加某行数据
  3. Git无法提交branch is currently checked out
  4. 网络共享服务(三)之SAMBA
  5. Spark学习之路 (十八)SparkSQL简单使用[转]
  6. java网页日期选择框对应的星期有误
  7. 0级搭建类003-CentOS Linux安装 (CentOS 7)公开
  8. 【E20200102-1】centos 7 下vsftp的安装和配置
  9. css动画 transition
  10. 假期学习【一】Ubuntu中Linux的基础操作