剑指offer——面试题3:二维数组中的查找
2016-08-15 18:57
330 查看
题目:在一个二维数组中,,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的殊勋排序。请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否有该整数。
示例数组:
1 2
8 9
2 4
9 12
4 7
10 13
6 8
11 15
分析:若从左上角开始,则该证书可能在当前数字右边,也可能在当前数字下边,并且这两个区域还有重叠。
此题从右上角入手开始判断,则会简单很多。
代码如下:
bool find(int *matrix,int rows,int columns,int number)
{
bool find = false;
if(matrix != NULL && rows >0 && columns >0)
{
int row = 0;
int column = columns-1;
while(row < rows && column >=0)
{
if(matrix[row*columns + column] == number)
{
found = true;
break;
}
else if(matrix[row * columns + column] > number)
--column;
else
++row;
}
}
return found;
}
示例数组:
1 2
8 9
2 4
9 12
4 7
10 13
6 8
11 15
分析:若从左上角开始,则该证书可能在当前数字右边,也可能在当前数字下边,并且这两个区域还有重叠。
此题从右上角入手开始判断,则会简单很多。
代码如下:
bool find(int *matrix,int rows,int columns,int number)
{
bool find = false;
if(matrix != NULL && rows >0 && columns >0)
{
int row = 0;
int column = columns-1;
while(row < rows && column >=0)
{
if(matrix[row*columns + column] == number)
{
found = true;
break;
}
else if(matrix[row * columns + column] > number)
--column;
else
++row;
}
}
return found;
}
相关文章推荐
- 剑指offer--面试题3:二维数组的查找--Java实现
- 剑指Offer 面试题3:二维数组中查找
- [剑指offer]面试题3:二维数组中的查找
- 二维数组中的查找 剑指Offer面试题
- 【剑指Offer面试题】九度OJ1384:二维数组中的查找
- 剑指offer面试题:二维数组中的查找
- 剑指offer,面试题4,二维数组中的查找
- 剑指Offer学习之面试题3 :二维数组中的查找
- 剑指offer---面试题3:二维数组中的查找
- C++二维数组中的查找(剑指offer面试题4)
- 二维数组的查找 剑指offer面试题
- 【剑指Offer学习】【面试题3 :二维数组中的查找】
- 剑指offer-chapter2-面试题3-二维数组的查找(java)
- 剑指offer-面试题3.二维数组中的查找
- 剑指offer之面试题3:二维数组的查找
- 剑指Offer面试题3(Java版):二维数组中的查找
- 剑指offer-面试题3:二维数组中的查找
- 剑指offer面试题3之二维数组中的查找