题目
思路
暴力求解不说
题目说每行每列都是递增的,
先用左下角的数和target
比较
- 大于
target
的话,那么当前这一行这个数后面的数全部都大于target
,所以直接去看上一行(row--
) - 小于
target
的话,就比较当前行这个数后面的数(col++
)
也可以从右上角开始比较
代码
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int n = array.size(); //行数
int m = array[0].size(); //列数
int row = n - 1, col = 0;
while (row >= 0 && col < m) {
if (array[row][col] == target) return true;
else if (array[row][col] > target) {
row--;
} else {
col++;
}
}
return false;
}
};
让我想到了杨辉矩阵,也是行列递增,找第K大的数,那道题是二维矩阵中用二分
看这篇