题目描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
华为的题目基本上用c写的,剑指offer开始想用python来写了,慢慢的练习一下喽
###两种思路:
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
'''
#第一种方法,两个for循环遍历二维数组一个一个找,比较麻烦,常规解法没技术含量
row=len(array)#行
colunm=len(array[0]) #列
flag=1
for i in range(row):
for j in range(colunm):
if array[i][j]==target:
flag=0
return True
return False
'''
##########第二种方法#########
''' 从左下角7开始查找比左下角大则列加1,比左下角数小则行减1;也可以从右上角;但是如果从左上或者右下的话行和列都是同时变大或者变小,所以不合适。
1 2 3
4 5 6
7 8 9 '''
row=len(array)-1 #行
colunm=len(array[0])-1 #列
j=0
while row>=0 and j<=colunm:
if array[row][j]>target:
row=row-1
elif array[row][j]<target:
j=j+1
else:
return True
return False
if __name__ =='__main__':
Find()
其实还有一种想法,就类似于折半查找