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