题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,
每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
题目解答
第一种方法比较直观,就是一行一行,每一行一个一个的比较,时间复杂度是 O ( N M ) O(NM) O(NM)
class Solution:
# array 二维列表
def Find(self, target, array):
if len(array[0]) == 0:
return False
for i in range(len(array)-1,-1,-1):
if array[i][0] > target:
pass
elif array[i][0] == target:
return True
else:
for j in range(len(array[0])):
if array[i][j] == target:
return True
return False
第二种方法也是一行一行的比较,一行内使用二分查找的方法比较,时间复杂度是 O ( N l o g M ) O(NlogM) O(NlogM)
class Solution:
# array 二维列表
def Find(self, target, array):
if len(array[0]) == 0:
return False
for i in range(len(array)-1,-1,-1):
if array[i][0] > target:
pass
elif array[i][0] == target:
return True
else:
m,n = 0,len(array[0])-1
while m <= n:
middle = (m+n)//2
if array[i][middle] == target:
return True
elif array[i][middle] > target:
n = middle-1
else:
m = middle+1
return False