編寫乙個高效的演算法來判斷 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
示例 3:
輸入:matrix = , target = 0
輸出:false
由於矩陣本身是左小右大, 上小下大, 所以如果先從最右上角的數字開始比較
int i = 0; int j = matrix[0].length - 1;
如果該數等於目標數, 直接返回
如果該數小於目標數, 由"左小右大"的特性, 該數所在行所有數都小於目標數, 則直接忽略該行, 將比較的數字置往下挪一行i++
如果該數大於目標數, 由"上小下大"的特性, 該數所在列所有數都大於目標數, 則直接忽略該列, 將比較的數字置往左挪一列j--
class
solution
int m = matrix.length;
int n = matrix[0]
.length;
// 遍歷時從"右上角"開始遍歷
for(
int i =
0, j = n -
1; i < m && j >=0;
)else
if(matrix[i]
[j]< target)
else
}return
false;}
}
力扣演算法題 074搜尋二維矩陣
編寫乙個高效的演算法來判斷 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 搜尋二維矩陣
編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性 每行中的整數從左到右按公升序排列。每行的第乙個整數大於前一行的最後乙個整數。示例 1 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,50 target 3 輸出 true示例 2 ...
LeetCode 搜尋二維矩陣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...