题目:搜索二维矩阵 II
如图,不妨将矩阵旋转45度,将其视作一个图,此时它的形式类似于一颗_“ 二叉搜索树 ”_(左边节点都小于当前节点,右边节点都大于当前节点),所以可以采用在二叉搜索树中使用的查找算法
具体实现:
以右上方节点为根节点,如果目标值小于当前节点,就向左移动(列数减一);如果目标值大于当前节点,就向右移动(行数加一)。如果直到最后,也就是超出行列的边界之后都没有找到对应值,就返回false,即矩阵中不存在目标值
```cppbool searchMatrix(vector<vector
{
int rows = matrix.size();
int cols = matrix[0].size();
int row = 0, col = cols - 1;
while(row < rows && 0 <= col)
{
if(target < matrix[row][col]) col--;
else if(matrix[row][col] < target) row++;
else return true;
}
return false;
}