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;
    }
};
相关推荐
海洲探索-Hydrovo4 小时前
TTP Aether X 天通透传模块丨国产自主可控大数据双向通讯定位模组
网络·人工智能·科技·算法·信息与通信
墨染天姬6 小时前
【AI】数学基础之矩阵
人工智能·线性代数·矩阵
2401_841495647 小时前
【计算机视觉】基于复杂环境下的车牌识别
人工智能·python·算法·计算机视觉·去噪·车牌识别·字符识别
Jonkin-Ma7 小时前
每日算法(1)之单链表
算法
晚风残8 小时前
【C++ Primer】第六章:函数
开发语言·c++·算法·c++ primer
杨云强8 小时前
离散积分,相同表达式数组和公式
算法
地平线开发者8 小时前
征程 6 | BPU trace 简介与实操
算法·自动驾驶
满天星83035778 小时前
【C++】AVL树的模拟实现
开发语言·c++·算法·stl
Lris-KK9 小时前
力扣Hot100--94.二叉树的中序遍历、144.二叉树的前序遍历、145.二叉树的后序遍历
python·算法·leetcode
麦麦鸡腿堡9 小时前
Java的动态绑定机制(重要)
java·开发语言·算法