• 《剑指offer》—— 二维数组中的查找


    点我查看原题
    点我查看原文

    题目描述

    在一个 (n * m) 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    解题思路

    • 暴力写法:

      1. 直接遍历,从头开始找直到匹配目标值;
      2. 从左上角开始递归,如果当前值 小于 目标值,那么往 右边 / 下边 走,直到匹配目标值。
    • 巧妙写法:

      1. 从右上角开始递归,如果当前值 小于 目标值,那么往 下边 走,如果当前值 大于 目标值,那么往 左边 走;
      2. 从右上角开始循环,逻辑同上。

    示例代码

    /**
     * @param {number[][]} matrix
     * @param {number} target
     * @return {boolean}
     */
    var findNumberIn2DArray = function(matrix, target) {
        const helper = (x, y) => {
            if (x === height || y < 0) {
                return false
            }
            if (matrix[x][y] === target) {
                return true
            }
            // 如果当前值小于目标值,那么往下边走
            if (matrix[x][y] < target) {
                return helper(x + 1, y)
            }
            // 否则往左边走
            return helper(x, y - 1)
        }
        if (!matrix.length) {
            return false
        }
        let width = matrix[0].length
        let height = matrix.length
        return helper(0, width - 1)
    };
    

    搜索「tony老师的前端补习班」关注我的微信公众号,那么就可以第一时间收到我的最新文章。

  • 相关阅读:
    LeetCode 43 字符串相乘
    HDU 1031 Design T-Shirt
    HDU 1728 逃离迷宫
    HDU 1285 确定比赛名次
    HDU 1116 Plays on words
    HDU 1195 Open the lock
    HDU 1072 Nightmare
    HDU 1272 小希的迷宫
    HDU 1273 漫步森林
    HDU 1269 迷宫城堡
  • 原文地址:https://www.cnblogs.com/pigpigever/p/13695345.html
Copyright © 2020-2023  润新知