编辑
2023-07-23
PythonAlgorithm
00

7月19号,再次上号Leetcode,一顿操作,中等难度,随机到

240. Search a 2D Matrix II

这种从故意舒适圈跳出的行为很反人性,就像冬天起床一样困难,

但是玩够了,实在无聊,

终于集满启动值,开始刷题,不设目标数量,

主打一个开心慢刷,中等难度为主。

捕获.PNG

searchgrid2.jpg

查找路径:15-11-7-4-5

js
Input: 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

searchgrid.jpg

js
Input: 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
python
class 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