Files
LeetCode/矩阵/4. 搜索二维矩阵 Ⅱ.md
T
2025-10-02 22:41:54 +08:00

62 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 搜索二维矩阵 Ⅱ
## 题目
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
示例 1:
输入:matrix = [[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
示例 2:
输入:matrix = [[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 = 20
输出:false
提示:
m == matrix.length
n == matrix[i].length
1 <= n, m <= 300
-109 <= matrix[i][j] <= 109
每行的所有元素从左到右升序排列
每列的所有元素从上到下升序排列
-109 <= target <= 109
## 思路
- 起点
- 右上角
## 代码
```java
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int m = matrix.length; // height
int n = matrix[0].length; // wide
// Traverse: (Init: Location)
int loc_i = 0;
int loc_j = n - 1;
while (loc_i < m && loc_j >= 0) {
if (matrix[loc_i][loc_j] == target) {
return true;
} else if (matrix[loc_i][loc_j] < target) {
loc_i++;
} else {
loc_j--;
}
}
return false;
}
}
```