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

利用本身有的特性:

# -*- coding:utf-8 -*-
class Solution:
    # array 二维列表
    def Find(self, target, array):
          self.target=target
        self.array=array
        n=len(self.array)
        m=len(self.array[0])
        flag=False
        if (len(self.array[0]) == 0):
            return False
        if(self.targetself.array[n-1][m-1]):
            return False
        for i in range(n-1,-1,-1):
            if self.target<=self.array[i][n-1] and self.target>=self.array[i][0]:
                for j in range(len(self.array[0])-1,-1,-1):
                    if self.target==self.array[i][j]:
                         return True
        return Flase
    ~~~
利用2分查找
~~~python
class Solution:
    # array 二维列表
    def Find(self, target, array):
        self.target=target
        self.array=array
        n=len(self.array)
        m=len(self.array[0])
        flag=False
        if (len(self.array[0]) == 0):
            return False
        if(self.targetself.array[n-1][m-1]):
            return False
        for i in range(0,n):
            l=0
            r=n-1
            while(l<=r):
                mid=(l+r)//2
                if(self.targetarray[i][mid]):
                    l=mid+1
                else:
                    return True
        return False

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