【leetcode】74. 搜索二维矩阵
文章目录
- 题目
- 题解
- 1. 暴力求解
- 2. 拉成一维,二分
题目
74. 搜索二维矩阵
给你一个满足下述两条属性的 m x n 整数矩阵:
每行中的整数从左到右按非严格递增顺序排列。
每行的第一个整数大于前一行的最后一个整数。
给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。
题解
1. 暴力求解
class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:m = len(matrix)n = len(matrix[0])for i in range(m):for j in range(n):if matrix[i][j] < target:continueelif matrix[i][j] == target:return Trueelse:return Falsereturn False
2. 拉成一维,二分
- mid // n为行所在
- mid % n为列所在
class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:m = len(matrix)n = len(matrix[0])left = 0right = len(matrix[0]) * len(matrix) - 1while left <= right:mid = (left + right) // 2x = matrix[mid // n][mid % n]if x == target:return Trueif x < target:left = mid + 1else:right = mid - 1return False