在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
我刷题我快乐!!!
最简单的方式肯定是比较二位数组中的每一个元素,但是这样方式肯定不是最佳的方式。
可以考虑的是再二维数组中走出一个路径,主要的问题在于怎么根据当前数值和所求数值的大小关系,来就决定路径的方向。
假如从左上角开始,当前元素小于所求的时候,该往哪走?右面的比它大,下面的也比它大,右面的和下面的谁大?不知道。。。
所以就应该从左下角开始,这样往左走就是找比它大的,往上走就是找比它小的。(用右上角的点也可以。)
# -*- 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 = rows-1
col = 0
while row>=0 and col < cols:
if target == array[row][col]:
return True
elif target > array[row][col]:
col += 1
else:
row -= 1
return False