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;
    }
};
相关推荐
_日拱一卒8 小时前
LeetCode:25K个一组翻转链表
算法·leetcode·链表
啊哦呃咦唔鱼8 小时前
LeetCodehot100-394 字符串解码
算法
小欣加油9 小时前
leetcode2078 两栋颜色不同且距离最远的房子
数据结构·c++·算法·leetcode·职场和发展
我真不是小鱼9 小时前
cpp刷题打卡记录30——轮转数组 & 螺旋矩阵 & 搜索二维矩阵II
数据结构·c++·算法·leetcode
Jasmine_llq10 小时前
《B4259 [GESP202503 二级] 等差矩阵》
线性代数·矩阵·顺序输入输出算法·双重循环遍历算法·行列乘积计算算法·矩阵逐行输出算法·空格分隔输出算法
逻辑驱动的ken10 小时前
Java高频面试考点场景题09
java·开发语言·数据库·算法·oracle·哈希算法·散列表
帅小伙―苏10 小时前
力扣42接雨水
前端·算法·leetcode
AI科技星11 小时前
精细结构常数α的几何本源:从第一性原理的求导证明、量纲分析与全域验证
算法·机器学习·数学建模·数据挖掘·量子计算
6Hzlia11 小时前
【Hot 100 刷题计划】 LeetCode 287. 寻找重复数 | C++ 数组判环 (快慢指针终极解法)
c++·算法·leetcode
MegaDataFlowers11 小时前
26.删除有序数组中的重复项
算法