力扣刷题Day 46:搜索二维矩阵 II(240)
1.题目描述
2.思路
方法1:分别找到搜索矩阵的右、下边界,然后从[0][0]位置开始遍历这部分矩阵搜索目标值。
方法2:学习Krahets佬的思路,从搜索矩阵的左下角开始遍历,matrix[i][j] > target时消去第i行,matrix[i][j] < target时消去第j列。
3.代码(Python3)
方法1:
class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:if matrix[0][0] > target:return Falsem, n = len(matrix), len(matrix[0])bottom, right = m, nfor k in range(m):if matrix[k][0] > target:bottom = kbreakfor k in range(n):if matrix[0][k] > target:right = kbreakfor i in range(bottom):for j in range(right):if matrix[i][j] == target:return Truereturn False
方法2:
class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:i, j = len(matrix) - 1, 0while i >= 0 and j < len(matrix[0]):if matrix[i][j] > target: i -= 1elif matrix[i][j] < target: j += 1else: return Truereturn False
4.执行情况
方法1:
方法2:
5.感想
今天好困,脑子不清醒,感觉我的方法1应该还可以优化的但实在没精力了。