题目:

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

分析:

首先我们根据题目描述我们可以画出一个符合条件的例子,
二维数组中的查找(python)_Python
我画了一个2*3的一个二位数组。那么要判断一个整数是否在该数组内,我们可以分析得知,==右边元素是比这个元素大,上边是的元素比这个元素小。==那么我们可以以最后一列的第一个元素作为参考元素,如果某个整数比参考元素大,则往右移动去寻找,而如果某个整数比参考元素小就往上去找。

以一个例子:寻找7,来分析:
那么首先7比参考元素小,所以向上找到5,而7又比5大,所以向右移动找到6,6又比7小,在向右找到7,就找到这个元素了。
那么根据这样一分析,我们就需要有两个指针进行对行,列的移动。所以我们首先定义行,列的长度。row=len(arry)-1.cols=len(arry[0])-1。指针指向参考元素,即i=row,j=0.
二维数组中的查找(python)_Python_02
然后判断某个元素与参考元素大小,比参考元素大,j进行加1操作,比参考元素小进行i减1操作。当进行到i<0或者j>cols时就会停止操作,并且返回一个false。(换句话而言就是在i>=0,j<=cols时进行循环操作)

代码:
# -*- coding:utf-8 -*-
class Solution:
    # array 二维列表
    def Find(self, target, array):
        # write code here
        row = len(array) - 1
        cols= len(array[0]) - 1
        
        #定位到左下角元素
        i = row
        j = 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 False