LeetCode 剑指 Offer 04. 二维数组中的查找

题目描述

🔥 剑指 Offer 04. 二维数组中的查找

在一个 m x n 的二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列。请实现一个函数,判断一个目标值 target 是否在该二维数组中。


示例 1: 输入:matrix = [[1, 3, 5], [7, 9, 11], [15, 17, 19]], target = 9 输出:true 解释:9 在数组中存在。


示例 2: 输入:matrix = [[1, 3, 5], [7, 9, 11], [15, 17, 19]], target = 10 输出:false 解释:10 在数组中不存在。


提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 1000
  • -10^9 <= matrix[i][j] <= 10^9

image-20241107172311693

思路分析

思路描述

参考代码

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
	}

	row, col := 0, len(matrix[0])-1 // 从右上角开始
	for row < len(matrix) && col >= 0 {
		if matrix[row][col] == target {
			return true
		} else if matrix[row][col] > target {
			col-- // 向左移动
		} else {
			row++ // 向下移动
		}
	}
	return false
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func findTargetIn2DPlants(matrix [][]int, target int) bool {
	if len(matrix) == 0 || len(matrix[0]) == 0 {
		return false
	}

	row, col := 0, len(matrix[0])-1 // 从右上角开始
	for row < len(matrix) && col >= 0 {
		if matrix[row][col] == target {
			return true
		} else if matrix[row][col] > target {
			col-- // 向左移动
		} else {
			row++ // 向下移动
		}
	}
	return false
}

🍏 点击查看 Java 题解

1
write your code here
本文作者:
本文链接: https://hgnulb.github.io/blog/2024/26553981
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!