剑指offer——在一个二维递增数组中查找一个数
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
解题思路:因为二维数组,从左至右,从上至下递增。从上往下每一行遍历,当遍历到比target大的数字是,说明target只会出现在左下那块地方。然后缩小范围到左下角继续遍历,直至找到或者遍历结束
图解如下:
答案:运行时间:9ms,占用内存:1360k
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int rowSize = array[0].size();//列数
int columnSize = array.size();//行数
bool flag = false;
for(int i =0;i<columnSize;++i)
{
int j =0;
for(;j<rowSize;++j)
{
if(array[i][j]==target)return true;
if(array[i][j]>target)
{
flag = true;
break;
}
}
if(flag)
{
rowSize = j;
}
}
return false;
}
};