描述:
给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。要求时间复杂度 O(M + N),空间复杂度 O(1)。
思路:
考虑到时间复杂度,对角线比较大小进行查找。
解答:
def metrix_query():
target = 18
data = [
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
row, col = 5, 5
r, c = 0, col-1
while r < row and c >= 0:
if data[r][c] == target:
return True, r, c
elif data[r][c] < target:
r += 1
else:
c -= 1
return False, None, None
print metrix_query()