每天一道python练习08

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

分析:例如数组:

1 4 5

2 6 8

4 8 10

6 9 12

从二维数组的右上角开始分析,如果要查找的数大于该数字,则去掉这一行;如果要查找的数字小于该数字,则去掉这一列;如果等于查找结束。以此类推,如果要查找的数不再数组的右上角,则去掉一行或者一列,逐渐缩小范围,直到找到为止,或者找不到返回为空.例如查找9,9>5删除第一行;9>8,删除第二行;9小于10,删除第3列;9>6,删除第三行;最后9=9,查找结束.

code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
def Find(self, target, array):
# write code here
m= len(array) - 1
i= 0
while m >= 0 and i< len(array[0]):
if array[m][i]>target:
m-=1
elif array[m][i]<target:
i+=1
else:
return 1
return 0