题目描述:
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
思路:
二维数组创建:
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
>>> import numpy as np
>>> array = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> array
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> len(array)
3
>>> array[0]
array([1, 2, 3])
>>> len(array[0])
3
因为数据为从左往右,从上到下递增,所以右上角的数字是一行中最大的,是一列中最小的。
从数组的右上角开始遍历:
若值 == target:找到结果直接返回;
若值 > target:向左移动一列,继续查找;
若值 < target:向下移动一行,继续查找。
# -*- coding:utf-8 -*-
class Solution:
# array 二维列表
# self是类实例对象本身
def Find(self, target, array):
rows = len(array)-1 #定义行
clos = len(array[0])-1 #定义列
i = 0
j = clos
while i <= rows and j >=0:
if array[i][j] == target:
return True
elif array[i][j] > target:
j -= 1
else:
i += 1
return False