01-二维数组的查找

题目描述

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

什么是二维数组?

二维数组 arry[3][4] = [  8,9,10,11,
                        9,10,11,12,
                        10,11,12,13,]

思路

从左下角元素往上查找,右边元素是比这个元素大,上边是的元素比这个元素小。
于是,target比这个元素小就往上找,比这个元素大就往右找。
如果出了边界,则说明二维数组中不存在target元素。

代码

# -*- coding:utf-8 -*-
class Solution:
    # array 二维列表
    def Find(self, target, array):
        # write code here
        rows = len(array) - 1  # 3行  循环下标 0,1,2
        cols = len(array[0]) - 1  # 4列  循环下标 0,1,2,3
        i, j = rows, 0  # [3,0]开始
        while j <= cols and i >= 0:
            if target < array[i][j]:
                i -= 1
            elif target > array[i][j]:
                j += 1
            else:
                return True
        return None

target = 8
array = [[8,9,10,11],[9,10,11,12],[10,11,12,13]]

obj = Solution()
ret = obj.Find(target,array)
print(ret)
posted @ 2018-10-11 16:58  venicid  阅读(138)  评论(0编辑  收藏  举报