给你一个满足下述两条属性的 m x n
整数矩阵:
- 每行中的整数从左到右按非严格递增顺序排列。
- 每行的第一个整数大于前一行的最后一个整数。
给你一个整数 target
,如果 target
在矩阵中,返回 true
;否则,返回 false
。

最简单的方法就是一个个找 我先写个最简单的这个
class Solution(object):
def searchMatrix(self, matrix, target):#matrix是一个矩阵 target是要寻找的那个值
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j]==target:
return True
return False
solution=Solution()
result=solution.searchMatrix([[1,3,5,7],[10,11,16,20],[23,30,34,60]],13)
print(result)
就这就已经通过了 运行速度还打败百分之百 我觉得可能是因为python的缘故?这种for循环其实不好 试试其他方法 我觉得是需要利用这个每行递增 而且下一行相对于上一行的最末尾递增的
那么我是不是如果这个数字比这一行的最后一个大 那么就会在下一行
class Solution(object):
def searchMatrix(self, matrix, target):#matrix是一个矩阵 target是要寻找的那个值
for i in range(len(matrix)):
if matrix[i][len(matrix[0])-1]==target:
return True
if matrix[i][len(matrix[0])-1]>target:
if matrix[i][0]>target:
return False
for j in range(len(matrix[0])):
if matrix[i][j]==target:
return True
return False
return False
solution=Solution()
result=solution.searchMatrix([[1,3,5,7],[13,11,16,20],[23,30,34,60]],13)
print(result)
思路就是这样的 找一行的末尾是比这个数大的 如果达到这个要求 那么找这一行最开始的 要么就在这一行 要么就没有
然后其实还是有优化思路的 就比如在确定了是这一行之后 这一行是有序的 所以使用二分查找会更快 我就不继续写了 感觉这个题目蛮简单的 真的好简单啊 也可能是因为Python的缘故?