题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
什么是二维数组?
二维数组 arry[3][4] = [ 8,9,10,11,
9,10,11,12,
10,11,12,13,]
思路
从左下角元素往上查找,右边元素是比这个元素大,上边是的元素比这个元素小。
于是,target比这个元素小就往上找,比这个元素大就往右找。
如果出了边界,则说明二维数组中不存在target元素。
代码
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
rows = len(array) - 1 # 3行 循环下标 0,1,2
cols = len(array[0]) - 1 # 4列 循环下标 0,1,2,3
i, j = rows, 0 # [3,0]开始
while j <= cols and i >= 0:
if target < array[i][j]:
i -= 1
elif target > array[i][j]:
j += 1
else:
return True
return None
target = 8
array = [[8,9,10,11],[9,10,11,12],[10,11,12,13]]
obj = Solution()
ret = obj.Find(target,array)
print(ret)