「LeetCode」剑指Offer-04二维数组中的查找⚡️

简介: 「LeetCode」剑指Offer-04二维数组中的查找⚡️

image.png


前言🌧️



算法,对前端人来说陌生又熟悉,很多时候我们都不会像后端工程师一样重视这项能力。但事实上,算法对每一个程序员来说,都有着不可撼动的地位。

因为开发的过程就是把实际问题转换成计算机可识别的指令,也就是《数据结构》里说的,「设计出数据结构,在施加以算法就行了」。


如今的大环境里,算法已经成为了前端工程师发展路上不可或缺的技能之一。如果我们想未来更上一层楼,不再是只写业务代码的应用工程师,就离不开对算法和数据结构的掌握。


当然,学习也是有侧重点的,作为前端我们不需要像后端开发一样对算法全盘掌握,有些比较偏、不实用的类型和解法,只要稍做了解即可。


题目🦀



剑指 Offer 04. 二维数组中的查找


难度中等


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


示例:


现有矩阵 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


给定 target = 20,返回 false


限制:


0 <= n <= 1000
0 <= m <= 1000


解题思路🌵



  • 将大问题拆分成小问题。
  • 每次都从最右上角的元素开始对比
  • 如果选取元素小于目标元素,则减少列数
  • 如果选取元素大于目标元素,则增加行数
  • 如果项目那么就退出找到了


image.png


源码🔥



/**
 * @param {number[][]} matrix
 * @param {number} target
 * @return {boolean}
 */
var findNumberIn2DArray = function(matrix, target) {
        if(!matrix||!target){
            return false
        }
        let row = 0
        let column = matrix[0].length-1
        while(row<=(matrix.length-1)&&column>=0){
            console.log(row,column)
            const num=matrix[row][column]
             if(num===target){
                 return true
             }else if(num<target){
                   ++row 
             } else if(num>target){
                 --column
             }
        }
        return false
};

时间复杂度:O(m*n) 矩阵的长宽


空间复杂度:O(1)


结束语🌞



image.png


那么鱼鱼的LeetCode算法篇的「LeetCode」剑指Offer-04二维数组中的查找⚡️就结束了,算法这个东西没有捷径,只能多写多练,多总结,文章的目的其实很简单,就是督促自己去完成算法练习并总结和输出,菜不菜不重要,但是热爱🔥,喜欢大家能够喜欢我的短文,也希望通过文章认识更多志同道合的朋友,如果你也喜欢折腾,欢迎加我好友,一起沙雕,一起进步

相关文章
|
8天前
LeetCode(面试题:二维数组中的查找)
LeetCode(面试题:二维数组中的查找)
22 0
|
C语言
LeetCode二维数组例题(原地旋转和对角线遍历)-c语言
LeetCode二维数组例题(原地旋转和对角线遍历)-c语言
|
存储 算法
图解LeetCode——剑指 Offer 04. 二维数组中的查找
图解LeetCode——剑指 Offer 04. 二维数组中的查找
38 0
|
Java Python
【LeetCode每日一题】剑指 Offer 04. 二维数组中的查找(持续更新)
【LeetCode每日一题】剑指 Offer 04. 二维数组中的查找(持续更新)
53 0
leetcode------二维数组中的查找
leetcode------二维数组中的查找
52 0
|
算法
LeetCode题解——二维数组查找
今天继续算法题:二维数组中的查找
140 0
【LeetCode剑指offer04】二维数组中的查找(简单数学)
从左到右,从上到下,两条路径都是数值从小到大排列,为了确定target是否存在,可以换个起点开始,如从右上角(其实从左下角开始也行),这时候就很神奇了
102 0
【LeetCode剑指offer04】二维数组中的查找(简单数学)
【解题报告】《LeetCode零基础指南》(第八讲) 二维数组(2)
【解题报告】《LeetCode零基础指南》(第八讲) 二维数组(2)
【解题报告】《LeetCode零基础指南》(第八讲) 二维数组(2)
|
人工智能 C语言 UED
【解题报告】《LeetCode零基础指南》(第八讲) 二维数组(1)
【解题报告】《LeetCode零基础指南》(第八讲) 二维数组(1)
【解题报告】《LeetCode零基础指南》(第八讲) 二维数组(1)
[小玄的刷题日记]《LeetCode零基础指南》(第7讲) 二维数组
[小玄的刷题日记]《LeetCode零基础指南》(第7讲) 二维数组
113 0
[小玄的刷题日记]《LeetCode零基础指南》(第7讲) 二维数组