剑指Offer04. 二维数组中的查找
写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点
1. 特殊起始点法
- 思路就是利用从左下或者右上的特殊起始点来查找数组中的数字,从这两个点开始,具有唯一性,
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
int row=matrix.size()-1;
int column=matrix[0].size()-1;//特别注意这个地方有-1
int j=0;
while(row>=0&&j<column)
{
if(target==matrix[row][j])
return true;
else if(target>matrix[row][j])
{
j++;
}
else
{
row--;//j++和row--注意不能写反
}
}
return false;
}
};
知识点及反思
- 为何我的第一种方法可以测试通过但是没法提交成功,我服了。。
- 二分搜索树(Binary Search Tree)
从右上角看就是一个二叉搜索树,厉害!!!!