Leetcode 74. 搜索二维矩阵
标签: Leetcode
题目地址:https://leetcode-cn.com/problems/search-a-2d-matrix/
题目描述
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
- 每行中的整数从左到右按升序排列。
- 每行的第一个整数大于前一行的最后一个整数。
示例 1:
输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 3 输出: true
示例 2:
输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 13 输出: false
算法思想
因为数组本身有序,并且我们是从里面找到一个数字,所以很容易就想到了二分查找,可以通过数组的行和列计算得到数组的元素个数,然后进行二分查找,如果我们获得了一个位置mid,我们通过mid//n,mid%n
就可以映射会原来数组的位置,然后得到对应的数值与target
比较即可,所以就是一个高级的二分查找。
python代码
class Solution(object):
def searchMatrix(self, matrix, target):
"""
:type matrix: List[List[int]]
:type target: int
:rtype: bool
"""
if len(matrix)==0:return False
m = len(matrix)
n = len(matrix[0])
l = m*n
left = 0
right = l-1
while left<=right:
mid = (left + right) //2
i,j = mid//n,mid%n
if matrix[i][j] == target:return True
elif matrix[i][j]>target:right = mid -1
else:left = mid+1
return False
欢迎大家关注我的微信公众号,未来上面会推送python
机器学习
算法学习
深度学习
论文阅读
以及偶尔的小鸡汤
等内容。ようこそいらっしゃい!
搜索 coderwangson 关注