题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路
最小值为左上方值,最大值在右下方,从左下方开始,小于目标值则向右,大于目标值向上
代码
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
if not array:
return False
m = len(array)
if m == 0:
return False
n = len(array[0])
if n == 0:
return False
if target < array[0][0] or target > array[m-1][n-1]:
return False
cur_m = m - 1
cur_n = 0
while cur_m >= 0 and cur_n < n:
if array[cur_m][cur_n] == target:
return True
elif array[cur_m][cur_n] > target:
cur_m -= 1
else:
cur_n += 1
return False
结果
运行时间:293ms
占用内存:5624k