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

利用本身有的特性:

# -*- 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.target<self.array[0][0]) or (self.target>self.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.target<self.array[0][0]) or (self.target>self.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.target<array[i][mid]):
                    r=mid-1
                elif(self.target>array[i][mid]):
                    l=mid+1
                else:
                    return True
        return False
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容