LeetCode 热题100-70-搜索二维矩阵Ⅱ

核心思想:z字形搜索
思路:
我们可以从矩阵matrix 的右上角(0,n−1) 进行搜索。在每一步的搜索过程中,如果我们位于位置 (x, y),那么我们希望在以matrix 的左下角为左下角、以(x,y) 为右上角的矩阵中进行搜索,即行的范围为[x,m−1],列的范围为[0,y]:

如果matrix[x,y]=target,说明搜索完成;

如果matrix[x,y]>target,由于每一列的元素都是升序排列的,那么在当前的搜索矩阵中,所有位于第 y 列的元素都是严格大于target 的,因此我们可以将它们全部忽略,即将 y 减少 1;

如果matrix[x,y]

在搜索的过程中,如果我们超出了矩阵的边界,那么说明矩阵中不存在target。

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int m = matrix.length;
        int n = matrix[0].length;
        int x = 0;
        int y = n - 1;
        boolean sign = false;
        while(x < m && y >= 0){
            if(matrix[x][y] > target){
                y--;
            }else if(matrix[x][y] < target){
                x++;
            }else{
                sign = true;
                break;
            }
        }
        return sign;
    }
}

你可能感兴趣的:(Leetcode热题100)