题目描述:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:
设矩阵array=
[a11 a12 … a1n
a21 a22 … a2n
…
an1 an2 … ann]
查找的目标整数为:target
已知每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,故若target在array中,则有:
target >= a11 且 target<= ann
假设,target在第i行中,则有:
target >= ai1 , target<= ain 且 target in array[i]
否则,target不在array中。
python编程如下:
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
if not array:
return
row = len(array) ##计算矩阵行数
line = len(array[0]) 计算举证列数
if line !=0 and target >= array[0][0] and target <= array[row-1][line-1]:
##矩阵中的每一列的数字非空,且目标整数在第一个数和最后一个数之间
for i in range(row):
if target >= array[i][0] and target <= array[i][line-1]:
if target in array[i]:
return True
else:
return False