LeetCode240-搜索二维矩阵II

题目链接

英文链接:https://leetcode.com/problems/search-a-2d-matrix-ii/

中文链接:https://leetcode-cn.com/problems/search-a-2d-matrix-ii/

题目详述

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

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

示例:

现有矩阵 matrix 如下:

1
2
3
4
5
6
7
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]

给定 target = 5,返回 true

给定 target = 20,返回 false

题目详解

本题与 LeetCode74-搜索二维矩阵 的相同点在于每行的元素从左到右升序排列和每列的元素从左到右升序排列,不同点在于 LeetCode74-搜索二维矩阵 每行的第一个整数大于前一行的最后一个整数,而本题不满足。故把矩阵化为一维的方式不再适用。但从整体上看,矩阵的左上方到右下方是增大的,以矩阵的副对角线为基准进行查找的方法仍旧适用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class LeetCode_00240 {

public boolean searchMatrix(int[][] matrix, int target) {
int i = matrix.length - 1;
int j = 0;
while (i >= 0 && j < matrix[0].length) {
if (matrix[i][j] < target) {
++j;
} else if (matrix[i][j] > target) {
--i;
} else {
return true;
}
}
return false;
}
}