题目链接: https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/
思路解题
-
暴力解决,直接迭代遍历判断。不写代码了
复杂度分析
时间复杂度:O(MN)。
空间复杂度:O(1)。 -
因为是按照从左往左右,从上到下依次递增的顺序(逆时针旋转45度为一个二叉搜索树),所以我们基于左下角开始进行判断即可,如果大于当前值就往上走,如果小于当前值就往右走。
代码如下
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return false;
}
int rows = matrix.length, columns = matrix[0].length;
int row = 0, column = columns-1;
while (row < rows && column >=0 ) {
int num = matrix[row][column];
if (num == target) {
return true;
} else if (num > target) {
column--;
} else {
row++;
}
}
return false;
}
复杂度分析
时间复杂度:O(M+N)。
空间复杂度:O(1)。
网友评论