搜索二维矩阵

搜索二维矩阵

直接用搜索二维矩阵Ⅱ的代码可以直接过掉

cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m=matrix.size()-1;
        int n=matrix[0].size()-1;
        int x=0,y=n;
        while(x<=m&&y>=0)//从右上角往左下角搜索,当前值大于目标值 y--,小于目标值则X++;
        {
            if(matrix[x][y]==target)
            {
                return true;
            }
            if(matrix[x][y]>target)
            {
                y--;
            }
            else x++;
        }
        return false;
    }
};

我们再练习一下二分吧在这里:

cpp 复制代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int hang = -1;
        int n = matrix.size();
        for(int i = 0; i < n; i++) {
            // 判断最后一行或者检查到合适的行
            if (i == n-1 || (matrix[i][0] <= target && matrix[i+1][0] > target)) {
                hang = i;
                break;
            }
        }
        // 如果没找到合适的行,直接返回 false
        if (hang == -1) return false;

        int l=0,r=matrix[0].size()-1;
        while(l<r)
        {
            int mid=(l+r+1)>>1;
            if(matrix[hang][mid]>target) r=mid-1;
            else l=mid;
        }
        if(matrix[hang][r]!=target) return false;
        return true;
        
    }
};

然后就是可以进行数组拼接再二分。

然后就是找合适的行的时候,也可以用二分 时间复杂度就会从O(n)变为O(logn)

相关推荐
是main不是漫2 分钟前
【双指针|LeetCode1089 复写零】巧用逆向思路,破解原地覆盖陷阱
数据结构·算法·leetcode
专注仿真10 小时前
知识问答模型用到的算法集详解及代码实例
python·算法·代码·大模型训练·控制算法
罗西的思考11 小时前
【轻量化复刻大模型 / KIMI K3】AttnRes 模块交互式演示
人工智能·算法·机器学习
好悬给我拽开线14 小时前
ZILOT 论文解析
算法
饮水桶_T15 小时前
JAVA IO流笔记
开发语言·数据结构·算法
星夜离尘5616 小时前
MATLAB 离散数据分箱:半开区间、末端点与计数、加权和、平均
算法·matlab
Pniubi16 小时前
力扣76.最小覆盖子串
算法·leetcode·职场和发展
地平线开发者17 小时前
征程6|用 hrt\_model\_exec 看清 YOLOv5x 的输入、原始输出和后处理
人工智能·算法
csdn_aspnet18 小时前
C++ 3个有序点的方向(Orientation of 3 ordered points)
c++·算法
赤生云电竞18 小时前
GPU算力共享平台架构实践:任务分发与资源隔离的关键配置
算法·架构·gpu算力