Appearance
0074-搜索二维矩阵
https://leetcode.cn/problems/search-a-2d-matrix
编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。
示例 1:
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true
示例 2:
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
输出:false
提示:
- m == matrix.length
- n == matrix[i].length
- 1 <= m, n <= 100
- -10^4 <= matrix[i][j], target <= 10^4
思路
选择左下角的点作为切入点,根据矩阵特性如果目标数字比他大,那么一定是在右边。 如果目标数字比他小一定在上边。 如果最后查找越界,则说明没找到对应数字
参考代码
csharp
public class Solution {
public bool SearchMatrix(int[][] matrix, int target) {
if(matrix.Length == 0){
return false;
}
//选择左下角作为起点
int i = matrix.Length - 1;
int j = 0;
while(i >= 0 && j < matrix[0].Length){
if(target == matrix[i][j]){ //找到
return true;
}
else if(target > matrix[i][j]){ //右边
j++;
}
else{ //上边
i--;
}
}
return false;
}
}
AlgoPress