Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
- Integers in each row are sorted in ascending from left to right.
- Integers in each column are sorted in ascending from top to bottom.
Example:
Consider the following 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] ]
Given target = 5, return true.
Given target = 20, return false.
检测矩阵中是否存在target,矩阵按每行递增,每列递增规律。
直接用两个for循环遍历数组当然很容易解决,但是可以充分利用给的矩阵的条件。
所以可以从矩阵右上角开始寻找,如果小于target则列-1,如果大于target则行+1。
class Solution:
def searchMatrix(self, matrix, target):
"""
:type matrix: List[List[int]]
:type target: int
:rtype: bool
"""
row=len(matrix)
if row==0 or len(matrix[0])==0:return False
col=len(matrix[0])
r,c=0,col-1
while r<row and c>=0:
num=matrix[r][c]
if target==num:
return True
elif target<num:
c-=1
else:
r+=1
return False

本文介绍了一种高效的算法,用于在m x n大小的矩阵中查找特定值,该矩阵的特点是每一行和每一列的元素都按升序排列。通过从矩阵的右上角开始,比较目标值与当前元素,若目标值较小则向左移动,若较大则向下移动,以此方式逐步缩小搜索范围,直至找到目标值或确定其不存在。
245

被折叠的 条评论
为什么被折叠?



