LeetCode 240 搜尋二維矩陣 II

2022-06-16 12:36:08 字數 1398 閱讀 3371

difficulty:中等

編寫乙個高效的演算法來搜尋_m_ x _n_矩陣matrix中的乙個目標值target。該矩陣具有以下特性:

示例 1:

輸入: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

示例 2:

輸入: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 = 20

輸出:false

solution

這題也是劍指offer書中的一道經典題目,出現的頻率很高。題目中給出乙個二維陣列,要求給出乙個高效的辦法從二維陣列中找到target,如果從二位陣列中任意乙個數的右邊或者下邊的數都比它大的思路去做是行不通的,我們可以從陣列的「右上角」出發,如果最右上角的數大於target,那麼target一定在最右上角數的左邊也肯定不在最右上角數所在的列,所以搜尋的範圍向左邊移動;如果最右上角的數小於target,那麼target肯定出現在最右上角數的下方,所以搜尋的範圍向下移動。整體的時間複雜度為o(m+n)

class solution:

def searchmatrix(self, matrix: list[list[int]], target: int) -> bool:

if not matrix or not target: return false

m, n = len(matrix), len(matrix[0])

row, col = 0, n - 1

while row < m and col >= 0:

if matrix[row][col] > target:

col -= 1

elif matrix[row][col] < target:

row += 1

else:

return true

return false

leetcode240 搜尋二維矩陣

編寫乙個高效的演算法來搜尋 m x n 矩陣 matrix 中的乙個目標值 target。該矩陣具有以下特性 示例 現有矩陣 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...

LeetCode 240 搜尋二維矩陣 II

編寫乙個高效的演算法來搜尋 m x n 矩陣 matrix 中的乙個目標值 target。該矩陣具有以下特性 示例 現有矩陣 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...

LeetCode 240 搜尋二維矩陣 II

1.題目 2.解答 2.1.方法一 從矩陣的左下角開始比較 class solution return false 2.2.方法二 我們先沿著對角線的方向,找到第乙個大於目標值的數字。比如目標值 14,我們發現 9 14 17。然後左上角和右下角的元素都可以排除掉了。我們只需再對左下角剩餘的行和右上...