1.题目描述
由于是有大小排列的关系,又是矩阵,我联想到了,二叉树。
将左下角matrix[size][0]视为二叉树的根节点,比它大的在matrix[size][1],比它小的在matrix[size-1][0].
2.解题思路
以左下角为起点,进行大小的比较,根据二叉树的规则,在while循环中逐一比较。
3.代码
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
int i= matrix.size()-1;
int j=0;
while(i>=0&&j<matrix[0].size())
{
if(matrix[i][j]>target)
i--;
else if(matrix[i][j]<target)
j++;
else return true;
}
return false;
}
};
4.关键部分解释
主要关于matrix矩阵
二维数组求行数和列数以及vector容器中矩阵求行数和列数
vector数组
vector<vector> matrix;解释:这样写是表示二维数组,因为vector容器表示的是一维数组,所以vector<vector>这种形式的数组是二维数组,<>里面是数组的类型
行数:matrix.size();
列数:matrix[0].size();
二维数组:
int matrix[ ][ ];
a = sizeof(matrix[0][0]);//一个元素占得空间
b= sizeof(matrix[0]);//一行所占的空间
c= sizeof(matrix);//整个数组占得空间
行数: sizeof(matrix) /sizeof(matrix[0])
列数:sizeof(matrix[0]) / sizeof(matrix[0][0])