LeetCode 240. 搜索二维矩阵 II

/*
左下角的元素是这一行中最小的元素,同时又是这一列中最大的元素。比较左下角元素和目标:
1.若左下角元素等于目标,则找到
2.若左下角元素大于目标,则目标不可能存在于当前矩阵的最后一行,问题规模可以减小为在去掉最后一行的子矩阵中寻找目标
3.若左下角元素小于目标,则目标不可能存在于当前矩阵的第一列,问题规模可以减小为在去掉第一列的子矩阵中寻找目标
4.若最后矩阵减小为空,则说明不存在
*/

//给定一个 m * n 的矩阵 matrix ,注意区分 matrix.length 、matrix[0].length
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        //边界判断
        if(matrix == null || matrix.length == 0) return false;
        //定义俩个指针,指向左下角元素 row为行,col为列
        int row = 0;
        int col = matrix[0].length - 1;
        //开始寻找
        while(row < matrix.length && col >= 0){ //矩阵元素不能跳出矩阵,相当于条件4
            if(matrix[row][col] == target){ //条件1
                return true;
            }else if(matrix[row][col] > target){ //条件2
                col--;
            }else { //条件3 只剩小于目标这种情况
                row++;
            }
        }
        return false; //条件4
    }
}

 

posted @ 2020-10-30 16:10  peanut_zh  阅读(83)  评论(0编辑  收藏  举报