题目描述

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

解答

1,循环每一行,先判断当前行的最后一个元素与target是否相等,相等则return。

2,如果当前行最后一个元素大于target,则按照倒叙方式将target与当前行的元素比较。

3,如果当前行最后一个元素大于target,则去查下一行。

# coding:utf-8
class Solution:

def Find(self, target, array):
rols = len(array)
row = 0
rows = len(array[0])
rol = rols - 1
     # 存在array = [[]]的情况,所以要判断array[0]是否为空
if rows == 0:
return False
# 循环
while rol >= 0 and row < rols:
if array[row][rol] == target:
return True
# 最后一个元素大于target,则比较前面的元素
if array[row][rol] > target:
rol -= 1
# 注意这里,当前行元素大于target,则rol -= 1;当前行元素小于target,则row += 1,就去查下一行。等于target,就return True
else:
row += 1
return False


s = Solution()
l = [
[1,3,5],
[2,4,6],
[3,5,7]
]

ret = s.Find(0, l)
print ret

结束!