編寫乙個高效的演算法來搜尋 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,返回true。
給定 target = 20,返回 false。
是自己的思路。難道說我現在已經可以做到自己把題做出來的水平了??
因為收到二分查詢的啟發,所以我的思路是:每次都找二維陣列的中心位置,然後判斷它和target的關係,由於中心點的左上方一定比它小,右下方一定比它大。所以每次都能縮小一定空間,然後不停遞迴,當陣列只有乙個數就判斷它的大小是否等於目標值。
時間複雜度:o(mnlogmn)
空間複雜度:o(1)
class
solution
public
boolean
searchchild
(int rl,
int rh,
int cl,
int ch)
int r =
(rl+rh)/2
;int c =
(cl+ch)/2
;if(matrix[r]
[c]==target)
if(matrix[r]
[c]if(matrix[r]
[c]>target)
return
false;}
}
思路二:
逐漸逼近。
以右上角作為起點,比較當前值與target的大小。如果當前值更大,那就向左走;如果當前值更小,那就向下走;相等就返回true。
這樣的優點是簡單,而且耗時比我的還短。。。
class
solution
else
if(matrix[m]
[n]> target)
else
}return
false;}
}
搜尋二維矩陣 II
搜尋二維矩陣 ii 寫出乙個高效的演算法來搜尋m n矩陣中的值,返回這個值出現的次數。這個矩陣具有以下特性 您在真實的面試中是否遇到過這個題?yes 樣例考慮下列矩陣 1,3,5,7 2,4,7,8 3,5,9,10 給出target 3 返回2 思路 行和列都是有序的,如果以右上角為起點來判斷大小...
搜尋二維矩陣 II
寫出乙個高效的演算法來搜尋m n矩陣中的值,返回這個值出現的次數。這個矩陣具有以下特性 樣例考慮下列矩陣 1,3,5,7 2,4,7,8 3,5,9,10 給出target 3 返回2 解題思路 遞增陣列,思路為從左下或者右上開始查詢。此題,我從左下開始查詢,第乙個為3,num 然後向上移動一行,去...
搜尋二維矩陣 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...