自学内容网 自学内容网

hot100_240. 搜索二维矩阵 II

hot100_240. 搜索二维矩阵 II

编写一个高效的算法来搜索 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

直接遍历

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        for(int[] row:matrix){
            for(int num:row){
                if(num==target){
                    return true;
                }
            }
        }
        return false;
    }
}

列减行增

从右上角 matrix[0][n-1]开始,
matrix[x][y]==target,结束
因为每列递增:matrix[x][y]>target , 该列的所有数值都大于target (它在该列的最上边),y–
因为每行递增:matrix[x][y]<target ,改行的所有数值都小于target (它在改行的最右边),x++

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

原文地址:https://blog.csdn.net/qq_45972323/article/details/145170483

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!