搜索二维矩阵II

编写一个高效的算法来搜索m x n矩阵matrix中的一个目标值target。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= n, m <= 300
  • -10^9 <= matrix[i][j] <= 10^9
  • 每行的所有元素从左到右升序排列
  • 每列的所有元素从上到下升序排列
  • -10^9 <= target <= 10^9

240.搜索二维矩阵II

剑指offer上有一样的题目。

这里从右上角开始搜索,如果目标小于当前的数,则下面这一列都不会有等于目标的数,往左一列;如果目标大于当前的数,则左边这一行都不会有等于目标的数,往下一行。

仔细想想,有没有挺像个二叉搜索树 我随便说的,我也不知道

反正能想到从右上角开始搜索就很简单啦,代码也不难的~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m = matrix.size(), n = matrix[0].size();
int col = n - 1, row = 0;
while(col >= 0 && row >= 0 && col < n && row < m){
if(matrix[row][col] == target){
return true;
}else if(matrix[row][col] > target){
col--;
}else{
row++;
}
}
return false;
}
};
Contents
|