現有矩陣 matrix 如下:
[給定 target =[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]
]
5
,返回true
。
給定 target =20
,返回false
。
這道題本質上就是遍歷二維陣列,我們可以直接遍歷,但是由於陣列中的資料是存在規律的(下大於上、右大於左),所以我們可以根據其規律,對其進行類似於「剪枝」的操作。
這裡我們是從左下角開始遍歷的,即示例中的18。這樣遍歷的好處是,比18大的元素,都在其右側,比18小的元素,都在其上方。
如果從1開始遍歷,無論是下方元素,還是右側元素,都是大於1的。需要額外進行比較(比較下方和右側元素和target的大小)。
classsolution
if (matrix[0] == null || matrix[0].length == 0)
//確定邊界
int bottom = matrix.length - 1;
int right = matrix[0].length - 1;
//確定起點
#確定邊界
搜尋二維矩陣 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...