牛客網 劍指offer JZ1 二維數組中的查找


在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
[
  [1,2,8,9],
  [2,4,9,12],
  [4,7,10,13],
  [6,8,11,15]
]

給定 target = 7,返回 true。

給定 target = 3,返回 false。

 

第一次用牛客的編輯器,有一些問題,

因為並不是直接IO,需要主函數放最后,

互相用self引用。

 

如果某個函數被引用,需要在第一個參數聲明self

 

其他就是簡單的二分

# -*- coding:utf-8 -*-

class Solution:
    # array 二維列表
    def b_rearch(self, start, stop, target, array):
            if (start > stop ):
                return False
            mid = (stop + start ) // 2
            if (array[mid] == target):
                return True
            elif (array[mid] > target):
                return self.b_rearch(start , mid-1, target , array)
            else:
                return self.b_rearch(mid+1 , stop, target , array)
    def Find(self, target, array):
        lenght = len(array[0])-1
        high = len(array)-1
        while(high > 0):
            if(array[high][0] > target):
                high = high - 1
            else:
                break
        for i in range(0,high + 1):
            if(self.b_rearch(0, lenght, target, array[i]) == True):
                return True
        return False

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM