剑指offer 二维数组中的查找
- 题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- C++解法
题意简单明了,但是刚开始想的时候没有特别清晰的思路,导致走了一些弯路。吃了个晚饭散散步回来删掉之前写的理清思路重新开始,其实真的挺简单的。
刚开始将元素定位到矩阵的右上角,然后根据和target的比较结果来进行行的增加和列的减少,直到找到target,否则返回false。
其实想了想,初始元素也可以定位在矩阵的左下角,是一样的道理。
占用时间:0ms
,占用内存:8552k
。
class Solution {
public:
bool Find(vector<vector<int> > array, int target) {
int row = array.size();
int col = array[0].size();
if (row==0 || col==0 || target<array[0][0])
return false;
int i = 0, j = col-1;
while (i < row && j >= 0){
if (array[i][j] == target)
return true;
else if (array[i][j]>target){
j--;
}
else if (array[i][j] < target){
i++;
}
}
return false;
}
};