题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
现有矩阵 matrix 如下:
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
思路:从矩阵的左下角或者右上角开始判断,左下角元素为第一列的最大值,最后一行的最小值,因为以左下角matrix [0][4]为例
如果左下角元素等于目标元素则返回True。
如果左下角元素大于目标元素,则目标元素不可能出现在最后一行,则可将行数-1,从matrix [0][3]中继续查找。
如果左下角元素小于目标元素,则目标元素不可能出现在第一列,则可将列数+1,从matrix [1][3]中继续查找.。
重复查找直到找到对应元素或者矩阵为空。
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
len_raw = len(array)
len_clo = len(array[0])
i = len_raw-1
j = 0
while i>=0 and j<len_clo:
if array[i][j] == target:
return True
elif array[i][j] < target:
j += 1
elif array[i][j] > target:
i -= 1
return False
# write code here