陣列 二維陣列中的查詢

2021-10-06 03:51:23 字數 1495 閱讀 1352

題目:

在乙個 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 如果目標數大於這個數字,...