在一個二維數(shù)組中(每個一維數(shù)組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數(shù),輸入這樣的一個二維數(shù)組和一個整數(shù),判斷數(shù)組中是否含有該整數(shù)。

利用本身有的特性:

# -*- 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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容