LeetCode 240. 搜索二维矩阵 II
题目描述
思路分析
从右上角开始搜索:
- 选择矩阵的右上角元素作为起始点。
- 如果当前元素等于目标值,返回
true
。- 如果当前元素大于目标值,向左移动(列减小)。
- 如果当前元素小于目标值,向下移动(行增加)。
- 继续这个过程,直到找到目标值或超出矩阵边界。
参考代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func searchMatrix(matrix [][]int, target int) bool {
if len(matrix) == 0 || len(matrix[0]) == 0 {
return false
}
m, n := len(matrix)-1, len(matrix[0])-1
i, j := 0, n
for i <= m && j >= 0 {
if matrix[i][j] > target {
j--
} else if matrix[i][j] < target {
i++
} else {
return true
}
}
return false
}
- 时间复杂度:O (m + n),其中 m 是行数,n 是列数。
- 空间复杂度:O (1),只使用了常数级别的额外空间。
1
write your code here
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用