解题思路
- 题目中给定的数组是n*m,可知在遍历二维数组之前,是已知数组大小;
- 通过已知二维数组大小,寻找与给定值相等的数;
- 按照规律每行/每列元素大小不断增加,首列元素(a[n][0])如果已经大于查找值,那么后面元素一定大与该值,无需再查找。
注:
1). vec1.size() 就是”二维数组”的行数
2). vec1[0].size() 就是”二维数组”的列数
关键还是学习如何遍历vector二维数组。
代码
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target)
{
if (matrix.empty())
{
return false;
}
for (int i = 0; i < matrix.size(); i++)
{
for(int j = 0; j < matrix[0].size(); j++)
{
if(matrix[i][0] > target)
{
return false;
}
if(matrix[i][j]==target)
{
return true;
}
}
}
return false;
}
};