题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
时间复杂度:O(n^2)
空间复杂度:O(1)
'''
class Solution:
# array 二维列表
def Find(self, target, array):
for i in range(len(array)):
for j in range(len(array[0])):
if array[i][j]==target:
return True
return False
# 暴力搜索
# for arr in array:
# if target in arr:
# return True
# return False
'''
时间复杂度:O(行高 + 列宽)O(行高+列宽)
空间复杂度:O(1)O(1)
'''
#从左下每行每列排除,直到找到最大值
class Solution1:
def Find(self,target,array):
row = len(array)
col = 0
while col<len(array[0]) and row>=0:
if array[row-1][col] == target:
return True
elif array[row-1][col]<target:
col += 1
elif array[row-1][col]>target:
row -= 1
return False
target = 7
array = [[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
solution = Solution1()
print(solution.Find(target,array))