21.在有序的二位数组中用O(m+n)的算法找target

1.题目描述

2.解题思路

分析:

先遍历第一行找到第一个比target大的前一个数,如果没有就从右上角开始

向下找,找到大于target的数,回退列

向下找,重复

找到target直接return

3.代码

cpp 复制代码
bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target){
    //先遍历第一行找到第一个比target大的前一个数,如果没有就从右上角开始
    //向下找,找到大于target的数,回退列
    //向下找,重复
    //找到target直接return
    int row = matrixSize;
    int col = matrixColSize[0];
    int idx;//保存遍历起点
    if(row==1 && col==1 && matrix[0][0]!=target){
        return false;
    }
    for(int j =0 ;j<=col-1;j++){
        if(matrix[0][j]==target){
            return true;
        }else if(matrix[0][j]>target){
            idx = j-1;
            break;
        }
        idx = j;
    }
    int i = 0;//遍历行的下标
    while(idx>=0 && i<=row-1){
        if(matrix[i][idx]>target){//如果下面的大于target
        i--;
        idx--;
        }else if(matrix[i][idx]<target){
            i++;
        }else{
            return true;
        }
    }
    return false;
}
相关推荐
Yzzz-F17 分钟前
Problem - 2205D - Codeforces
算法
智者知已应修善业1 小时前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
Halo_tjn1 小时前
Java Set集合相关知识点
java·开发语言·算法
生成论实验室2 小时前
《事件关系阴阳博弈动力学:识势应势之道》第四篇:降U动力学——认知确定度的自驱演化
人工智能·科技·神经网络·算法·架构
AI科技星2 小时前
全域数学·72分册:场计算机卷【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
科研前沿3 小时前
镜像孪生VS视频孪生核心技术产品核心优势
大数据·人工智能·算法·重构·空间计算
水蓝烟雨3 小时前
1931. 用三种不同颜色为网格涂色
算法·leetcode
晨曦夜月3 小时前
map与unordered_map区别
算法·哈希算法
图码4 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
handler014 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法