码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 剑指 Offer 04. 二维数组中的查找


    题目链接

    https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/

    思路

    主要有三种思路:

    1. 暴力找,时间复杂度 O ( n ∗ m ) O(n*m) O(n∗m)。
    2. 二分找,时间复杂度 O ( n ∗ l o g m ) O(n*logm) O(n∗logm)。
    3. 看成是二叉排序树的查找,时间复杂度 O ( n + m ) O(n+m) O(n+m)。

    第三种思路比较巧妙,利用该矩阵的特殊性质(行元素递增、列元素递增),将矩阵看成是二叉排序树,每个元素是树中的一个结点,其左边的元素都比它小,下边的元素都比它大。 右上角的元素看成是根结点。

    注:二叉查找树 (BST,Binary Search Tree),又称二叉搜索树、二叉排序树。

    代码

    贴一下第三种思路的代码。

    class Solution {
    public:
        bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
            // n行m列
            int n=matrix.size();
            if(n==0){ // 边界判断
                return 0;
            }
            int m=matrix[0].size();
            if(m==0){ // 边界判断
                return 0;
            }
            // 从矩阵右上角开始,往左边或下边走
            int i=0,j=m-1;
            while(i<=n-1&&j>=0){ // 越界时,结束循环,没找到target
                if(target==matrix[i][j]){
                    return 1;
                }
                if(target>matrix[i][j]){ // 往(i,j)下边走,进右子树
                    i++;
                }else{ // 往(i,j)左边走,进左子树
                    j--;
                }
            } 
            return 0;      
        }
    };
    
    /*
    输入:
    [[3,6,9,12,17,22],[5,11,11,16,22,26],[10,11,14,16,24,31],[10,15,17,17,29,31],[14,17,20,23,34,37],[19,21,22,28,37,40],[22,22,24,32,37,43]]
    20
    
    输出:true
    */
    

    吐槽

    题意与后台测试数据不符,实际上测试数据是“非递减”而不是“递增”,也就是说是“大于等于”。

    这个问题我已经在github上提issue了:https://github.com/LeetCode-Feedback/LeetCode-Feedback/issues/9263

  • 相关阅读:
    LeetCode --- 1491. Average Salary Excluding the Minimum and Maximum Salary 解题报告
    编制项目预算的方法和步骤
    【python】虚拟环境管理
    【python笔记】第五节 流程控制
    vue 甘特图(三):甘特图右侧内容拖动展示
    java计算机毕业设计计算机公共课程学习资源管理系统MyBatis+系统+LW文档+源码+调试部署
    软考 系统架构设计师系列知识点之大数据(1)
    jeecgboot-前端组件封装代码示例
    JAVA计算机毕业设计电视设备租借系统Mybatis+系统+数据库+调试部署
    汽车行驶中是怎么保障轴瓦安全的?
  • 原文地址:https://blog.csdn.net/ljw_study_in_CSDN/article/details/127115953
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号