写出一个高效的算法来搜索 m × n矩阵中的值。
这个矩阵具有以下特性:
- 每行中的整数从左到右是排序的。
- 每行的第一个数大于上一行的最后一个整数。
样例
样例 1:
输入: [[5]],2
输出: false
样例解释:
没有包含,返回false。
样例 2:
输入:
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
],3
输出: true
样例解释:
包含则返回true。
挑战
O(log(n) + log(m)) 时间复杂度
输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
"""
@param matrix: matrix, a list of lists of integers
@param target: An integer
@return: a boolean, indicate whether matrix contains target
"""
def searchMatrix(self, matrix, target):
# write your code here
n=len(matrix)
if n==0:
return False
i1 = 0
for sublist in matrix:
if sublist[0] > target:
break
else:
i1 += 1
i1 -= 1
for sub in matrix[i1]:
if sub == target:
return True
return False