python 二维数据的查找
二维数组中的查找
http://www.nowcoder.com/questionTerminal/abc3fe2ce8e146608e868a70efebf62e
题目描述
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例:
现有矩阵 matrix 如下:
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
给定 target = 5,返回 true。
给定 target = 20,返回 false。
思路
从右上角开始查找
如果比目标小,就向下查找
如果比目标大,就向左查找
如果到边界还没有找到,就返回false
# -*- coding:utf-8 -*- class Solution: # array 二维列表 def Find(self, target, matrix): def bfs(i, j): if i < m and j >= 0 : if matrix[i][j] == target: return True elif matrix[i][j] < target: return bfs(i+1, j) else: return bfs(i, j-1) else: return False if not matrix: return False m = len(matrix) n = len(matrix[0]) return bfs(0, n-1)