题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解答
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
结束!