在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
rows = len(array) # 行数
cols = len(array[0]) # 列数
if rows >0 and cols >0:
row = 0
col = cols-1 #起始点右上角的数
while row<rows and col>=0: #避免移动时,超过数组范围
if target == array[row][col]:
return True
elif target <array[row][col]:
col -= 1
else:
row += 1
return False
这个二维数组的特点是,讲右上角当作的遍历起始点,左边的树都比起始点小,下面的数都比起始点大。
- target比当前点大,下移
- target比当前点小,左移
1 | 2 | 3 | 4 |
---|---|---|---|
2 | 3 | 4 | 5 |
3 | 4 | 5 | 6 |