Skip to content

搜索二维矩阵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

答案

js
var searchMatrix = function(matrix, target) {
    let right=matrix[0].length-1;
    let top=0;
    while(top<=matrix.length-1&&right>=0){
        if(target==matrix[top][right]){
            return true;
        }
        else if(target>matrix[top][right]){
            top++;
        }
        else{
            right--;
        }
    }
    return false;
};

扩展

从右上角开始遍历,目标小往左找,目标大往下找