Leetcode240 Search a 2D Matrix II

原题地址

给定一个矩阵,满足每行从左到右是升序,每列从上到下是升序,求问目标值是否存在于矩阵中

看到题目中出现了排序好的情况,要么二分查找,要么双指针

由于从左到右升序,从上到下升序,那么对于一个元素,他的右下方所有元素都比他大,也即如果当前元素比目标值大,那么他的右下方所有元素也都比目标值大,自然是不用在右下方去找了,而是从左上方,同理,如果当前元素比目标值小,那么也不用在左上方找了。

我们从右上角开始,如果当前访问元素比目标值大,则往左变小,小,则向下变大,直到找到或者到达边界(即找不到)

1
2
3
4
5
6
7
8
9
10
11
12
13
public boolean searchMatrix(int[][] matrix, int target) {
int n = matrix.length;
if (n == 0) return false;
int m = matrix[0].length;
if (m == 0) return false;
int i = 0, j = m - 1;
while (i < n && j >= 0) {
if (matrix[i][j] == target) return true;
if (matrix[i][j] > target) --j;
else ++i;
}
return false;
}

最后更新: 2020年06月12日 22:30

原始链接: http://roooooobin.github.io/2020/06/12/Search-a-2D-Matrix-II-Solution/

× thanks~
打赏二维码