劍指offer(四) 矩陣查數

2021-09-23 20:23:18 字數 1542 閱讀 8501

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

程式:

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

class solution:

# array 二維列表

def find(self, target, array):

# write code here

# 左下角

'''* 矩陣是有序的,從左下角來看,向上數字遞減,向右數字遞增,

* 因此從左下角開始查詢,當要查詢數字比左下角數字大時。右移

* 要查詢數字比左下角數字小時,上移

'''print(len(array))# 我擦嘞,len()=1原來等於1

if array and array[0]:

i = len(array)-1

jmax=len(array[0])

j = 0

flag = false

# for i in range(array.shape[0]):

while (i >= 0 and (i = 0) and (j < len(array[0]))):

if target == array[i][j]:

flag = true

break

elif target > array[i][j]:

j = j + 1

else:

i = i - 1

'''if i<0 or j>=len(array[0]):

flag=false

break

'''return flag

else:

return false

a=solution()

print(a.find(16,[[1,2,3],[3,4,6]]))

2.1 二維列表

這裡雖然是二維矩陣,但不是numpy的形式,所以求長寬不是shape的形式,仍然是len的形式

行數=len(array),列數=len(array[0])

值得注意的是,len([ [ ]] ),二維空列表的行數為1

2.2 矩陣或者列表為空的判斷:

一維列表,比如【1,3,4】

這樣你用 if len(list)==0  都可以

判斷乙個 list 是否為空:

if len(mylist):

# do something with my list

else:

# the list is empty

if mylist:

# do something with my list

else:

# the list is empty

但是二維列表就有些問題:

最好的方式是這樣:

if array and array[0]:   #保證了【【】】這種也不會出錯

劍指offer 矩陣覆蓋

我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?使用dp,當n時,選著豎著放乙個,那麼後面的可能性為f n 1 選擇橫著放乙個,那麼要佔兩個位置,後面的可能性為f n 2 故f n f n 1 f n 2 f 1 1,f...

劍指offer 矩陣覆蓋

題目 矩陣覆蓋 題目描述 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?思路 此題和前面裴波那切類題是一樣的,尤其是和那個上樓梯的題 找到遞推式 f n f n 1 f n 2 n 2 對於這類題的變形 相應的結論應該...

劍指offer 1 矩陣陣列找數

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路1 從左下角開始尋找,大於目標,則向右移動,小於目標則向左移動。class solution array ...