剑指 Offer 04. 二维数组中的查找
发布日期:2021-05-12 21:18:17 浏览次数:12 分类:精选文章

本文共 694 字,大约阅读时间需要 2 分钟。

由于这个二维数组的结构是按行递增、按列递减排列的,我们可以从右上角开始搜索目标值。具体来说,右上角是数组的黄金位置,因为它几乎同时包含了行和列的高值特征。

我们可以通过以下步骤进行搜索:

  • 如果当前元素等于目标值,说明我们找到了目标值,应该立即返回true。
  • 如果当前元素小于目标值,那么说明目标值可能存在于当前位置的左侧。由于数组按行递增,我们继续向左移动列指针。
  • 如果当前元素大于目标值,说明目标值可能存在于当前位置的下方。由于数组按列递减,我们继续向下移动行指针。
  • 如果遍历完整个数组都没有找到目标值,则返回false。
  • 这种方法有助于我们快速缩小搜索范围,只关注可能存在目标值的区域,从而提高搜索效率。

    /**  * @param {number[][]} matrix  * @param {number} target  * @return {boolean}  */var findNumberIn2DArray = function (matrix, target) {    if (!matrix.length) return false;    let i = 0, j = matrix[0].length - 1;    while (i < matrix.length && j >= 0) {        if (matrix[i][j] === target) return true;        else if (matrix[i][j] < target) i++;        else j--;    }    return false;};
    上一篇:剑指 Offer 05. 替换空格
    下一篇:vue-router的安装与使用

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年04月29日 01时02分54秒