二维数组中的查找

题目描述

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

解答

1,循环每一行,先判断当前行的最后一个元素与target是否相等,相等则return。

2,如果当前行最后一个元素大于target,则按照倒叙方式将target与当前行的元素比较。

3,如果当前行最后一个元素大于target,则去查下一行。

# coding:utf-8
class Solution:

    def Find(self, target, array):
        rols = len(array)
        row = 0
        rows = len(array[0])
        rol = rols - 1
     # 存在array = [[]]的情况,所以要判断array[0]是否为空 if rows == 0: return False
# 循环
while rol >= 0 and row < rols: if array[row][rol] == target: return True
# 最后一个元素大于target,则比较前面的元素
if array[row][rol] > target: rol -= 1
# 注意这里,当前行元素大于target,则rol -= 1;当前行元素小于target,则row += 1,就去查下一行。等于target,就return True else: row += 1 return False s = Solution() l = [ [1,3,5], [2,4,6], [3,5,7] ] ret = s.Find(0, l) print ret

结束!

原文地址:https://www.cnblogs.com/aaronthon/p/13723181.html