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;
    }
};
相关推荐
JOKER_H.5 小时前
牛客:多项式输出
算法
轮到我狗叫了5 小时前
力扣300.最长递增子序列(经典dp)力扣375.猜数字II力扣.329矩阵最长的递增子序列力扣.33搜索旋转排序数组
算法·leetcode·深度优先
鸽鸽程序猿6 小时前
【算法】【优选算法】BFS 解决边权相同最短路问题
java·算法·宽度优先
xiyangxiaoguo6 小时前
Qt QEventLoop的使用的一个问题讨论
java·前端·算法
weixin_307779136 小时前
Windows路径转换成Cygwin中的Unix路径的方法
算法
xchenhao6 小时前
支持向量机 SVM 预测人脸数据集时数据是否标准化的对比差异
算法·机器学习·支持向量机·scikit-learn·svm·标准化
蒋星熠6 小时前
支持向量机深度解析:从数学原理到工程实践的完整指南
人工智能·python·深度学习·神经网络·算法·机器学习·支持向量机
qianshanxue116 小时前
四网络层IP-子网掩码ARP CIDR RIP OSPF BGP 路由算法-思考题
网络·tcp/ip·计算机网络·算法·同等学力
LLLfz6 小时前
函数查找-更快的查找算法
算法