您的位置:首页 > 编程语言 > Python开发

python刷题日记:剑指offer-二维数组的查找

2018-03-28 21:57 381 查看

题目描述

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题思路:这题肯定不能按顺序暴力破解....想了想发现从右上角或左下角开始搜索最好,这样比较大小时,移动的方向不会有重叠,减小循环量(若其中有值的话),后来看了大神们的代码,感觉还是需要有所简化。我的代码:# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
rows = len(array)
cols = len(array[0])
row = 0
col = cols-1
while row<=rows-1 and col>=0:
if array[row][col]==target:
return True
break
if array[row][col]<target:
row+=1
else :
col-=1
return False

另外,优化的代码
# -*- coding:utf-8 -*-
classSolution:
# array 二维列表
defFind(self, target, array):
# write code here
n=len(array)
flag='false'
fori inrange(n):
iftarget inarray[i]:
flag='true';
break
returnflag
whileTrue:
try:
S=Solution()
# 字符串转为list
L=list(eval(raw_input()))
array=L[1]
target=L[0]
print(S.Find(target, array))
except:
break
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: