牛客網python演算法練習(三)二維陣列的查詢

2021-08-16 08:42:43 字數 2070 閱讀 8408

牛客網劍指offer第一題,二維陣列的查詢,原位址在這裡

想要聯練習的小夥伴可以去練習練習。

題目:在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

這道題對python來說,只需要target  in array就可以了,但是邏輯能力和資料結構能力得不到提示。下面記錄一下思路,截圖取自劍指offer這本書,還是挺推薦購買正版的。

假設陣列是[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]],需要發現7這個數字,先從右上角9開始,如果9大於target,則不考慮9這一列;如果9小於target,則不考慮9這一行,如下截圖所示

下面上**,按照邏輯思路來寫的,可能空間以及變數不是利用的最好

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

'''#****************************************

劍指offer二維陣列查詢

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

#****************************************

'''class solution:

# array 二維列表

def find(self, target, array):

row = len(array) #返回陣列的行數

col = len(array[0]) #返回陣列的列數

row_i = 0

col_i = col-1

result = false

while(col_i >= 0 and row_i < row):

if array[row_i][col_i] > target: #右上角大於目標,列減一

col_i = col_i - 1

elif array[row_i][col_i] < target: #右上角小於目標,行加一

row_i = row_i + 1

else:

result = true

break

return result

# write code here

while true:

try:

s=solution()

# 字串轉為list

l=list(eval(raw_input()))

array=l[1]

target=l[0]

print(s.find(target, array))

except:

break

然而對python來說,這道題其實很簡單,python提供的強大的內建函式,下面是牛客網 網友的解答

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

class solution:

# array 二維列表

def find(self, target, array):

# write code here

n=len(array)

flag='false'

for i in range(n):

if target in array[i]:

flag='true';

break

return flag

while true:

try:

s=solution()

# 字串轉為list

l=list(eval(raw_input()))

array=l[1]

target=l[0]

print(s.find(target, array))

except:

break

牛客網練習30

眾所周知,小k是nowcoder的 苟管理,所以小k很擅長踢樹,雖然本題與踢樹無關 小k喜歡將日期排列成yyyy mm dd的形式 位數不足添零補齊 的形式,雖然這與小k只會做回文字串這道水題無關,但小k覺得日期組成的回文串也是挺可愛的。作為乙個涼心出題人,小k決定給你乙個可愛的問題 給你兩個日期,...

牛客網專項練習(七)

1 以下哪個資料結構不是多型資料型別 正確答案 d 棧廣義表有向圖字串分析 多型就是資料元素的型別不確定,字串的每個元素始終都是字元 char 而不會是別的型別。比如棧可以是整數棧 字元棧 物件棧等等。但是字串,它的元素必然是字元。2 以下資料結構中,是非線性資料結構 正確答案 a 你的答案 a 正...

牛客網提高五練習

吉老師的題,出的很有水平 應該是t1,t2難度 給出 l1,l2,r1,r2,m 詢問 displaystyle sum sum m i oplus j 對於前 30 分,我們可以簡單列舉 對於第二個點,我們已知乙個數 顯然對於 10 的資料範圍,我們只能考慮 o 1 或者 o logn 的演算法 ...