LeetCode 74 搜尋二維矩陣

2021-09-13 15:17:17 字數 912 閱讀 4944

編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性:

每行中的整數從左到右按公升序排列。

每行的第乙個整數大於前一行的最後乙個整數。

示例 1:

輸入:matrix = [

[1, 3, 5, 7],

[10, 11, 16, 20],

[23, 30, 34, 50]

]target = 3

輸出: true

示例 2:

輸入:matrix = [

[1, 3, 5, 7],

[10, 11, 16, 20],

[23, 30, 34, 50]

]target = 13

輸出: false

這道題看似很簡單,就遍歷整個矩陣然後判斷是否相同,但是其實bug還是很多的。比如matrix空,matrix= 都需要判斷。

class solution 

return false;

}}

這個方法很蠢,因為如果最壞情況還是要遍歷到最後才能得出答案。改進一加個判斷,一檢測到有數字大於target就停止。再這個基礎上再改進,那麼就是二分查詢了。

class solution 

if (matrix[row][col] > target) else

}return false;

}}

第乙個時間複雜度為o(n^2)

第二個就是o(nlog(n))

這道題思路還是很好找的,但是要做到bugfree還是需要多練多想。查詢數值,看見已經排好序了,那麼第一反應應該就是二分。

遇到這種查詢數值的題目,暴力迴圈當然是乙個解決辦法的嘛,但是如果說想要脫引而出,那麼就一定要思考其他的演算法了。

[1]

LeetCode74 搜尋二維矩陣

題目大意 要求在乙個二維矩陣中搜尋乙個數,要求是時間盡可能少。說明 二維矩陣是從左到右,從上到下依次增大的。題目分析 本題如果用挨個遍歷的話,顯然沒有利用上矩陣中的有序關係。我的做法是 將target的值與每行的最後乙個數進行比較,若最後乙個數小於target,那麼還要往下搜尋,將搜尋的行邊界的上界...

leetcode 74 搜尋二維矩陣

編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性 示例 1 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,50 target 3輸出 true示例 2 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,...

Leetcode 74 搜尋二維矩陣

編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性 示例 1 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,50 target 3輸出 true示例 2 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,...