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;
    }
};
相关推荐
报错小能手24 分钟前
C++笔记(面向对象)静态联编和动态联编
开发语言·c++·算法
WBluuue30 分钟前
AtCoder Beginner Contest 430(ABCDEF)
c++·算法
小肖爱笑不爱笑33 分钟前
2025/11/5 IO流(字节流、字符流、字节缓冲流、字符缓冲流) 计算机存储规则(ASCII、GBK、Unicode)
java·开发语言·算法
熬了夜的程序员1 小时前
【LeetCode】99. 恢复二叉搜索树
算法·leetcode·职场和发展
Kent_J_Truman1 小时前
LeetCode Hot100 自用
算法·leetcode·职场和发展
还是码字踏实1 小时前
算法题种类与解题思路全面指南:基于LeetCode Hot 100与牛客Top 101
算法·leetcode
Victory_orsh2 小时前
“自然搞懂”深度学习(基于Pytorch架构)——010203
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
CoovallyAIHub2 小时前
突破360°跟踪极限!OmniTrack++:全景MOT新范式,HOTA指标狂飙43%
深度学习·算法·计算机视觉
得物技术2 小时前
得物管理类目配置线上化:从业务痛点到技术实现
后端·算法·数据分析
CoovallyAIHub3 小时前
首个大规模、跨模态医学影像编辑数据集,Med-Banana-50K数据集专为医学AI打造(附数据集地址)
深度学习·算法·计算机视觉