題目:
在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
示例:
現有矩陣 matrix 如下:
[[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]給定 target = 5,返回 true。
給定 target = 20,返回 false。
解題思路:
假如從左下角開始遍歷得時候,遇到比它大的,就往右走,遇到比它小的,就往上走。右上角,相反操作即可。
```python
class solution(object):
def findnumberin2darray(self, matrix, target):
if not matrix: return false
#安全性檢驗,為空直接返回false
m, n = len(matrix), len(matrix[0])
#使用元組進行賦值,計算出二維陣列的行和列
row, col = m - 1, 0
#行=m-1 col=0,因為要從左下角開始遍歷
while row >= 0 and col < n:
#進行迴圈,條件是row不為負數,列數小於n
if matrix[row][col] < target: #此時進行判斷即可
col += 1
elif matrix[row][col] > target:
row -= 1
else:
return true
return false
看到乙個大神用的是:
try except語句:
【解題思路】
因為解只有一種情況, 即target在matrix內, 其他情況均為false, 簡單粗暴, 報錯就是false
**
class solution(object):
def findnumberin2darray(self, matrix, target):
try:
for i, line in enumerate(matrix):
if target >= line[0] and target <= line[-1] :
for j in matrix[i]:
if target == j:
return true
except:
return false
return false
二維陣列中的查詢(陣列 查詢)
題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路一 從左下角來看矩陣,向上數字遞減,向右數字遞增 從左下角開始查詢,當要查詢數字比左下角數字大時,右移 要查詢數字比左下...
二維陣列中的查詢 陣列
題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思想 因為有序,所以二分查詢。從上到下,從左到右,都是遞增。但是把二維變成一維之後就不是遞增的了 行進行二分查詢,確定在哪一...
二維陣列中的查詢 陣列
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。獲得二維陣列的行和列 區分好行和列,和下標的關係 我從右上角開始,下標為 0 列 1 如果目標數大於這個數字,...