leetcode240.搜索二维矩阵

leetcode240.搜索二维矩阵

题目

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

每行的元素从左到右升序排列。
每列的元素从上到下升序排列。

用例

输入: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
输入: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

求解

/**
 * @param {number[][]} matrix
 * @param {number} target
 * @return {boolean}
 */
var searchMatrix = function(matrix, target) {
    let i_pre=0
    let j_pre=0
    let i_last = matrix.length-1
    let j_last = matrix[0].length-1

    while(i_pre<=i_last&&j_pre<=j_last){

        //首先缩小last坐标
        while(i_last>=i_pre&&matrix[i_last][j_pre]>=target){
            if(matrix[i_last][j_pre]==target){
                return true
            }
            i_last--
        }

        while(j_last>=j_pre&&matrix[i_pre][j_last]>=target){
            if(matrix[i_pre][j_last]==target){
                return true
            }
            j_last--
        }
        //缩小pre
        i_pre++
        j_pre++
    }
    return false
};
posted @ 2021-12-08 14:56  BONiii  阅读(37)  评论(0)    收藏  举报