在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路,认为该矩阵每一列含有相同的元素,那么从左上,或者右下开始进行搜索即可,以从矩阵右下开始搜索为例,目标数比当前数小,横坐标--即可,目标数比当前数大,纵坐标++即可。若越界后仍未找到,则目标不存在。
求解中遇到了一些问题, 最初纵坐标j,我用的size_t类型,但是会提示出现段错误,后面换成了int类型就好了,至于为什么,暂时没想明白。
class Solution {
public:
bool Find(int target, vector<vector <int>> array) {
int rowCount = array.size();
int colCount = array[0].size();
int i=rowCount-1;
int j=0;
while(i>=0&&j<=colCount-1){
if(target>array[i][j]){
++j;
}
else if(target<array[i][j]){
--i;
}
else
return true;
}
return false;
}
};