【剑指offer刷题记录】二维数组中的查找

题目描述——二维数组中的查找

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

解题思路

从某个角开始进行比较,对行列进行排除

代码实现

 1     def Find(matrix, rows, colums, number):
 2         found = False
 3         if(matrix is not None and rows>0 and colums>0):
 4             row = 0
 5             columns = colums - 1 #从右上角开始
 6             while(row<rows and columns>=0):
 7                 if(matrix[row*columns+columns] == numbers):
 8                     found = True
 9                     break
10                 else if(matrix[row*columns+columns] > number):
11                     #右上角大于目标数,则其所在列都不符合(因为是从右上角开始找的,所以该元素所在列之上的元素已经考虑过了)
12                     columns -= 1
13                 else:
14                     #右上角元素小于目标数,右上角元素为该行最大值,则去掉该行
15                     row +=1
16             return found







原文地址:https://www.cnblogs.com/szxyx/p/13307782.html