[路飞]搜索二维矩阵II

82 阅读1分钟

记录 1 道算法题

搜索二维矩阵II

leetcode.cn/problems/se…


要求:提供一个二维数组,横竖都是从小到大升序,寻找一个数字,如果里面存在则返回 true,不存在返回 false。

利用数组升序的特性,我们可以从左上角找起,如果寻找的数字比当前数字小,那么他一定比当前数字下面的数字小,所以往左找。如果比当前数字大,那么说明比这一行的数字都大,所以往下找。最后会一直往左或者往下找,所以循环停止的条件就是左边界和下边界。

完整代码如下:

    function searchMatrix (matrix, target) {
        // x轴y轴看待
        let x = martix[0].length - 1
        let y = 0
        
        while(x >= 0 && y < martrix.length) {
            const m = martix[y][x]
            if (target < m) {
                x--
            } else if (target > m) {
                y++
            } else {
                return true
            }
        }
        
        return false
    }