题目描述:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
刚看到这道题目的时候,觉得和leetcode中一道数组查找题目很像,可是又有点区别,下面顺便给出leetcode中的描述:
每一行都按照从左到右递增的顺序排序,每一行开头第一列的第一个数大于等于前一行最后一列的数字。
下面给出该题的思路:
从数组的左下角的开始查找,如果target小于该数字,则往上移动一行,如果target大于该数字,则往右移动一行,直到到达边界。
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int nrow = array.size();
if(nrow == 0)
return false;
int ncol = array[0].size();
if(ncol == 0)
return false;
int i = nrow-1, j = 0;
while(i >= 0 && j < ncol){
if(array[i][j] == target)
return true;
if(array[i][j] < target)
j++;
if(array[i][j] > target)
--i;
}
return false;
}
};