题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
每次从右上角开始查找,
如果当前数字大于目标数字,说明要查找的数字可能位于当前数字所在列的左侧;
如果当前数字小于目标数字,说明要查找的数字可能位于当前数字所在行的下侧;
也可以从左下角开始查找,但是不能从左上角和右下角查找,例如如果从左上角查,如果目标数字大于当前数字,那么目标数字可能在当前数字所在行的下侧,所在列的右侧,这样就没法进行了。
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int size = array.size();
int x = 0;
int y = array[0].size()-1;
bool found = false;
while(x >= 0 && y >= 0 && x < size)
{
if(array[x][y] == target)
{
found = true;
break;
}
if(array[x][y] > target) y--;
if(array[x][y] < target) x++;
}
return found;
}
};