1. 程式人生 > 其它 >牛客網 劍指offer JZ1 二維陣列中的查詢

牛客網 劍指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