编写一个高效的算法来判断 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
(1)遍历法
1,直接拿目标值和数组第一列的元素相比较,找到目标所在的行;
2,找到目标行之后,遍历该行和目标值比较即可;
3,注意和第一列元素比较时,相等则直接返回true,不等则直到找到比目标值大的坐标处;
4,注意特殊情况的判断;一,数组为行列为0的情况;二,找行时的判断,如果已经比第一个值都小,那说明直接不存在,返回false即可;
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
return method1(matrix,target);
}
private boolean method1(int[][] matrix, int target) {