在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
方法一:
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
new =[]
for i in range(len(array)):
new.extend(array[i])
for i in range(len(new)):
if new[i]==target:
return True
else:
return False
思路:把它变成一维数组,然后遍历。O(n),O(n)。
方法二:
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
for i in range(len(array[0])-1, -1, -1):
if array[0][i] <= target:
a = i
break
else:
return False
for i in range(len(array)):
if array[i][a] >= target:
b = i
break
else:
return False
for i in range(0, a + 1):
for j in range(b, len(array)):
if array[j][i] == target:
return True
else:
return False
思路:o(n) o(1)
第一步:从第一行的最后一个开始往前看。9比7大,8比7大,那么就可以不看最后两列。
[1 2 8 9 [1 2
2 4 9 12 2 4
4 7 10 13 4 7
6 8 11 15] 目标是7 6 8]
第二步:从剩下的矩阵中,每一行最后一个值是否比7小,如果是那么那一行就可以不用看了。
[1 2
2 4
4 7
6 8] 变为 [4 7
6 8]