【剑指offer】二维数组中的查找☆
题目描述
bool Find3(vector<vector<int> > array,int target)
{
if(array.empty() && array[].empty())
return false; int r = , c = array[].size() - ;
while(r < array.size() && c >= )
{
if(array[r][c] == target)
return true;
else if(array[r][c] > target)
c--;
else
r++;
}
return false;
}
我自己二分查找的思路,每次扔掉一半O(log(MN)),超级繁琐,也AC了
bool Find(vector<vector<int> > array,int target) {
if(array.empty() && array[].empty())
return false; //用四个变量标记剩余的查找范围
int cleft = , cright = array[].size() - ;
int rup = , rdown = array.size() - ;
int l, r, u, d; while(cleft <= cright && rup <= rdown)
{
//对限定区域的第一行进行二分查找,定位刚好小于target值的列
l = cleft, r = cright;
if(array[rup][l] > target) //所有的都大于target
return false;
else
{
while(l <= r)
{
int m = l + (r - l) / ;
if(array[rup][m] == target)
return true;
else if(array[rup][m] < target)
l = m + ;
else
r = m - ;
}
cright = r;
} //对限定区域的第一列进行二分查找,定位刚好小于target值的行
u = rup, d = rdown;
if(array[u][cleft] > target) //所有的都大于target
return false;
else
{
while(u <= d)
{
int m = u + (d - u) / ;
if(array[m][cleft] == target)
return true;
else if(array[m][cleft] < target)
u = m + ;
else
d = m - ;
}
rdown = d;
} //对限定区域的最后一行进行二分查找,定位刚好大于target值的列
l = cleft, r = cright;
if(array[rdown][r] < target) //所有的都小于target
return false;
else
{
while(l <= r)
{
int m = l + (r - l) / ;
if(array[rdown][m] == target)
return true;
else if(array[rdown][m] < target)
l = m + ;
else
r = m - ;
}
cleft = l;
} //对限定区域的最后一列查找,定位刚好大于target值的行
u = rup, d = rdown;
if(array[d][cright] < target) //所有的都小于target
return false;
else
{
while(u <= d)
{
int m = u + (d - u) / ;
if(array[m][cright] == target)
return true;
else if(array[m][cright] < target)
u = m + ;
else
d = m - ;
}
rup = u;
}
} return false; //没找到
}
【剑指offer】二维数组中的查找☆的更多相关文章
- (java)剑指offer二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从 上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. pu ...
- 剑指Offer 二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路法一: * 矩阵是 ...
- 剑指Offer——二维数组中的查找
题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 分析: 因为二维数组 ...
- 剑指offer—二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 用js刷剑指offer(二维数组中的查找)
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 牛客网-剑指Offer 二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 剑指Offer_4_二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- 面试题5-[剑指offer] 二维数组中的查找
题目 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- 剑指offer--1.二维数组中的查找
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- C#版剑指Offer-001二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
随机推荐
- 【linux】CPU,内存对网站的影响
如果读写非常多,建议内存大点 如果涉及到的计算非常多,那就升级CPU
- 一个手机号可以注册绑定5个百度网盘,永久2T
效果: 一个手机号可以注册绑定5个百度网盘,得永久2T硬盘 手机号只能做为其中一个网盘的登陆账号,其它四个用绑定qq登陆(微信应该也可以). 条件: 2个手机号:A(用来绑定百度网盘),B(用来申请网 ...
- bootmem_free_node
该函数设置: 1.pgdata节点的成员 2.pgdata->zone的成员 3.初始化zone->free_area 4.初始化zone所包含的所有页对应的页框描述符page结构体 /* ...
- Android如何添加多张引导页
摘要:项目需要添加多张引导页,所以在网上搜集了一些资料并整理好. Step1 添加一个GuideActivity. 其实这个引导页无非就是一个Activity,里面有一个ViewPager而已.多张图 ...
- synchronized同步方法和同步代码块的区别
同步方法默认使用this或者当前类做为锁. 同步代码块可以选择以什么来加锁,比同步方法更精确,我们可以选择只有会在同步发生同步问题的代码加锁,而并不是整个方法. 同步方法使用synchronized修 ...
- 【Remove Elements】cpp
题目: Given an array and a value, remove all instances of that value in place and return the new lengt ...
- ios开发学习笔记002-运算符
运算符 C语言有34种运算符,常见的有加减乘除. 算术运算符 1.加 10+2 2.减 20-2 3.乘 12*2 4.除 10/2 5.取余 10%3 = 1; 10%-3 = 1; -10%3 = ...
- Postgres 将查询结果同时插入数据表
INSERT INTO table [ ( column [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ... ...
- 12 JVM 垃圾回收(下)
Java 虚拟机的堆划分 Java 虚拟机将堆划分为新生代和老年代.其中新生代又被划分为 Eden 区,以及两个大小相同的 Survivor 区. 默认情况下,Java 虚拟机采取一种动态分配的策略, ...
- uploadify 报http 302错误
uploadify 报http 302错误 原因是系统采用Forms认证,服务端加入匿名认证即可 具体配置如下: <location path="Base/Base/Upload&qu ...