收藏:①极市开发DeepLearning ②Git使用

剑指offer-01

题目描述:

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

思路:将target与二维数组array第一行最后一个数做比较,如果target大于该行数,则不考虑第一行,相反不考虑最后一列,相等返回true;(从左下角或右上角开始均可)

 

 1 __author__ = "WSX"
 2 
 3 def isExist(L, key):  #L为数组, key关键字
 4     """i 和j 作为指针指向有效的右上角
 5         有效的意思: 只在有效的右上角或者左下角判断"""
 6     i = 0; j = len(L[0]) -1
 7     while i< len(L) and j>=0:
 8         if L[i][j] > key:
 9             j -=1   #删除列
10         elif L[i][j] < key:
11             i +=1   #删除行
12         else:
13             return True
14     return False
15 
16 print(isExist([[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]],5))

 

 

posted @ 2019-04-21 21:55  WSX_1994  阅读(105)  评论(0编辑  收藏  举报