01-二维数组的查找

Posted venicid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

以上是关于01-二维数组的查找的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer-01-二维数组中的查找

算法入门01二维数组中的查找

面试题4:二维数组中的查找

《剑指Offer——二维数组中的查找》代码

C++中如何在一个二维数组中查找某个值

二维数组中的查找