面試題04 二維陣列中的查詢

2021-10-02 19:41:48 字數 1088 閱讀 2353

在乙個 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。

左下角標誌法

標誌數引入: 此類矩陣中左下角和右上角元素有特殊性,稱為標誌數。

左下角元素: 為所在列最大元素,所在行最小元素。

右上角元素: 為所在行最大元素,所在列最小元素。

class

solution

(object):

deffindnumberin2darray

(self, matrix, target)

:"""

:type matrix: list[list[int]]

:type target: int

:rtype: bool

"""# 左下角標誌法,將左下角的值標記為flag,這個值是這一行的最小值,這一列的最大值,

# 如果target>flag,表示target在當前列的右邊,可以刪除當前列

# 如果target# 一次類推

n =len(matrix)-1

m =0while

(n>=

0and m<

len(matrix[0]

)): flag = matrix[n]

[m]if target== flag:

return

true

elif target>flag:

m +=

1elif targetn -=

1return

false

面試題 04 二維陣列中的查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。樣例 輸入陣列 1,2,8,9 2,4,9,12 4,7,10,13 6,8,11,15 如果輸入查詢數值為7...

面試題04 二維陣列中的查詢

題目描述 在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10...

面試題04 二維陣列中的查詢

在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10,13,1...