题目
**Level: ** 剑指offer
Discription:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
Note:
- 时间限制:1秒 空间限制:32768K
代码
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int r=array.size();
int l=array[0].size();
int i=r-1;
int j=0;
while(i>=0&&j<l)
{
if(array[i][j]>target)
i--;
else if(array[i][j]<target)
j++;
else
return true;
}
return false;
}
};
思考
- 时间复杂度为o(m+n),m为行数,n为列数,空间复杂度为o(1)
- 从左下角元素开始查找,若是大于当前元素,则列下标加1,若是小于当前元素,则行下标减一。