LeetCode:21.搜索二维矩阵Ⅱ

搜索二维矩阵Ⅱ

目录

1.暴力枚举

2.Z字型查找


1.暴力枚举

对于在一个二维矩阵中查找元素是否存在,我们首先会想到暴力枚举,通过两次遍历可以找出

cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size(), n = matrix[0].size();
        for(int i = 0; i < m; i++)
            for(int j = 0; j < n; j++)
                if(matrix[i][j] == target)
                    return true;
        return false;
    }
};

2.Z字型查找

对于第一种方法我们是否可以进行优化,这个二维矩阵每行从左到右,每列从上到下升序,可以利用这一特性,从右上角第一个元素开始判断,如果大于目标值,因为这个元素是这一行的最大元素了,应当去前面继续查找,同理,小于目标值,去下一行查找

通过这样判断,我们可以一次排除掉一行或一列的元素,相比于两次遍历,时间复杂度有所提升

cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size(), n = matrix[0].size();
        int row = 0, col = n - 1;
        while(row < m && col >= 0)
        {
            if(matrix[row][col] > target)
                col--;
            else if(matrix[row][col] < target)
                row++;
            else
                return true;
        }
        return false;
    }
};
相关推荐
小O的算法实验室18 分钟前
2026年AST SCI1区TOP,基于速度障碍法的多无人机三维避障策略,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
AlenTech32 分钟前
141. 环形链表 - 力扣(LeetCode)
数据结构·leetcode·链表
U-52184F691 小时前
深入理解“隐式共享”与“写时复制”:从性能魔法到内存深坑
java·数据库·算法
pp起床1 小时前
Part02:基本概念以及基本要素
大数据·人工智能·算法
lzh200409191 小时前
红黑树详解
算法
迈巴赫车主2 小时前
蓝桥杯20560逃离高塔
java·开发语言·数据结构·算法·职场和发展·蓝桥杯
泯仲2 小时前
Ragent项目7种设计模式深度解析:从源码看设计模式落地实践
java·算法·设计模式·agent
dulu~dulu2 小时前
算法---寻找和为K的子数组
笔记·python·算法·leetcode
moonsea02032 小时前
【无标题】
算法
佑白雪乐2 小时前
<ACM进度212题>[2026-3-1,2026-3-26]
算法·leetcode