首先了解一下二维数组的样子

我们知道该数组从左到右,从上到下都是增加的
先从最右上角开始遍历,大于右上角的话,就和该列的下一行比
小于最右上角的话,就行不变,列变,向左边移动一列
遍历的限制条件就是离开我们的数组范围
- class Solution {
- public:
- bool findNumberIn2DArray(vector
int >>& matrix, int target) { - if(matrix.empty() || matrix[0].empty()) return false;//行数与列数都不为零
-
- int i= 0;//第一行
- int j = matrix[0].size()-1;//最后一列开始
- while(i<=matrix.size()-1 && j >=0){
- if (target == matrix[i][j])
- return true;
- else if(target < matrix[i][j])//小于右上角的行不变列增加
- --j;
-
- else//大于右边上角就在这列的下一行比较
- ++i;
- }
- return false;
-
-
- }
- };