# [面试题 10.09. 排序矩阵查找](https://leetcode-cn.com/problems/sorted-matrix-search-lcci) [English Version](/lcci/10.09.Sorted%20Matrix%20Search/README_EN.md) ## 题目描述 <!-- 这里写题目描述 --> <p>给定M×N矩阵,每一行、每一列都按升序排列,请编写代码找出某元素。</p> <p><strong>示例:</strong></p> <p>现有矩阵 matrix 如下:</p> <pre>[ [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] ] </pre> <p>给定 target = <code>5</code>,返回 <code>true</code>。</p> <p>给定 target = <code>20</code>,返回 <code>false</code>。</p> ## 解法 <!-- 这里可写通用的实现逻辑 --> 从左下角(或右上角)开始查找即可。 <!-- tabs:start --> ### **Python3** <!-- 这里可写当前语言的特殊实现逻辑 --> ```python class Solution: def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: if not matrix or not matrix[0]: return False rows, cols = len(matrix), len(matrix[0]) i, j = rows - 1, 0 while i >= 0 and j < cols: if matrix[i][j] == target: return True if matrix[i][j] > target: i -= 1 else: j += 1 return False ``` ### **Java** <!-- 这里可写当前语言的特殊实现逻辑 --> ```java class Solution { public boolean searchMatrix(int[][] matrix, int target) { if (matrix == null || matrix.length == 0 || matrix[0] == null || matrix[0].length == 0) { return false; } int rows = matrix.length, cols = matrix[0].length; int i = rows - 1, j = 0; while (i >= 0 && j < cols) { if (matrix[i][j] == target) { return true; } if (matrix[i][j] > target) { --i; } else { ++j; } } return false; } } ``` ### **...** ``` ``` <!-- tabs:end -->