力扣240 搜索二维矩阵 ll
编写一个高效的算法来搜索 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
解法:从右上角看本质是一个二叉搜索树,左边比自己小,下面比自己大,因此从右上角开始搜索,如果当前值比的target大,那就列左移,否则行下移
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix.length == 0){
return false;
}
int row = 0;
int col = matrix[0].length - 1;
while(row < matrix.length && col >= 0){
if(matrix[row][col] == target){
return true;
}else if(matrix[row][col] > target){
col--;
}else {
row++;
}
}
return false;
}
}