剑指Offer——二维数组中的查找(JS实现)

简介: 剑指Offer——二维数组中的查找(JS实现)

题目描述

image.png

解题思路(数学规律)

  • 本题主要是从二维数组的左下角的元素出发,不断的进行移动比较,因为本题给出的二维数组存在一个特点就是,从左小角的元素出发,一列的元素中,上面的元素总是比下面的元素小,一行的元素中,右边的元素总是比左边的大,这个特点就是我们解题的关键。

解题代码

var findNumberIn2DArray = function(matrix, target) {
    // ! 本题核心:以左下角为起始点,如果比左下角的数字小,向上移动一位进行比较
    // ! 如果比左下角的数字大,向右移动一位进行比较
    if (matrix.length === 0) return false;
    // if (matrix[0])
    // 定位到左下角元素
    let origin = matrix[matrix.length - 1][0];
    // 定义移动时的指针;
    let top = matrix.length - 1;
    let right = 0;
    // 定义最终返回的结果
    let res;
    while (1) {
        if (top < 0 || right === matrix[0].length) return false;
        origin = matrix[top][right];
        if (origin === target) return true;
        if (origin < target) {
            right++;
        }
        if (origin > target) {
            top--;
        }
    }
};

总结(本题给我们的启示思路)

  • 启示:学会通过二维数组中的内在规律来解题。
相关文章
|
2月前
|
存储 JSON JavaScript
「offer来了」保姆级巩固你的js知识体系(4.0w字)
该文章提供了JavaScript知识体系的全面复习资料,覆盖了从基础语法到高级特性如闭包、原型链、异步编程等多个方面,并通过大量的面试题和实例代码帮助巩固理解。
「offer来了」保姆级巩固你的js知识体系(4.0w字)
|
29天前
|
分布式计算 JavaScript 前端开发
JavaScript:轻松创建二维数组的多种方法
本文探讨了如何使用 JavaScript 生成二维数组的多种方法,揭示了这些方法在编程中的灵活应用。文章首先通过介绍如何创建一维数组,为理解二维数组的生成奠定基础。接着,分析了几种常见的生成二维数组的方法,包括使用嵌套循环、Array.from()、Array.fill() 以及 展开运算符 和 map() 等技巧。每种方法都有其优缺点,开发者可以根据场景选择最合适的方案。
42 0
|
2月前
|
JavaScript 前端开发
JavaScript从二维数组抽取元素组成新数组的三种方法
JavaScript从二维数组抽取元素组成新数组的三种方法
|
2月前
|
JavaScript 前端开发
JavaScript从二维数组抽取若干元素组成新二维数组
JavaScript从二维数组抽取若干元素组成新二维数组
|
2月前
|
JavaScript 前端开发
用Javascript对二维数组DIY按汉语拼音的排序方法
用Javascript对二维数组DIY按汉语拼音的排序方法
|
2月前
|
JavaScript 前端开发
用JavaScript编程定义二维数组并初始化,然后输出元素值
用JavaScript编程定义二维数组并初始化,然后输出元素值
|
6月前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
JavaScript 前端开发 定位技术
js对二维数组的精确和模糊筛选并输出的封装函数
js对二维数组的精确和模糊筛选并输出的封装函数
123 0
|
6月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
42 0
|
JavaScript
js数组去重:二维数组去重、去除相同的值、移除相同的数组
js数组去重:二维数组去重、去除相同的值、移除相同的数组