7月19号,再次上号Leetcode,一顿操作,中等难度,随机到
240. Search a 2D Matrix II
这种从故意舒适圈跳出的行为很反人性,就像冬天起床一样困难,
但是玩够了,实在无聊,
终于集满启动值,开始刷题,不设目标数量,
主打一个开心慢刷,中等难度为主。
查找路径:15-11-7-4-5
jsInput: 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
Output: true
jsInput: 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
Output: false
pythonclass Solution:
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
#横向遍历矩阵,每一行使用双指针遍历,总复杂度O(m+n),
#二维矩阵遍历模式:行递增列递减矩阵
#找到返回true,找不到遍历下一行,遍历完毕返回false
#每行个数=len(matrix[0]),有多少行=len(matrix)
#row=0,循环row<n表示需要遍历的行数,未到表示可以继续向下面的行走
#col=m-1是遍历的指针,col>-1表示从右边索引开始找,只要没到-1可以继续搜索
#中心思想:行递增列递减
m, n =len(matrix[0]), len(matrix)
if not matrix:return False
row, col = 0, m-1
while row < n and col > -1:
if matrix[row][col] > target:
col-=1
elif matrix[row][col] < target:
row+=1
else:
return True
return False