hot100 240.搜索二维矩阵Ⅱ

1.思路:

(也可以理解为从右上角开始的抽象的二叉搜索树,每次都往左或往下搜索)

2.总结:利用matrix行列有序的性质,我们可以用O(1)的时间获取O(m)或O(n)的信息。相比之下,O(mn)的暴力查找(一个一个地找),每次花费O(1)的时间,只获取了O(1)的信息。

3.复杂度分析:

(1)时间复杂度:O(m + n)。其中m和n分别为matrix的行数和列数,每次循环排除掉一行或者一列,一共m + n行列,最坏情况下需要排除m + n - 1行列才能找到答案。

(2)空间复杂度:O(1)。

4.附代码:

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int i = 0;
        int j = matrix[0].length - 1; //从右上角开始
        while(i < matrix.length && j >= 0){ //还有剩余元素
            if(matrix[i][j] == target){
                return true; //找到target
            }
            if(matrix[i][j] < target){
                i++; //这一行剩余元素全部小于target,排除
            }else{
                j--; //这一列剩余元素全部大于target,排除
            }
        }
        return false;
    }
}
相关推荐
仰泳的熊猫3 小时前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
无极低码6 小时前
ecGlypher新手安装分步指南(标准化流程)
人工智能·算法·自然语言处理·大模型·rag
软件算法开发6 小时前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
superior tigre7 小时前
22 括号生成
算法·深度优先
努力也学不会java8 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
旖-旎8 小时前
二分查找(x的平方根)(4)
c++·算法·二分查找·力扣·双指针
ECT-OS-JiuHuaShan9 小时前
朱梁万有递归元定理,重构《易经》
算法·重构
智者知已应修善业9 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
khddvbe10 小时前
C++并发编程中的死锁避免
开发语言·c++·算法