leetcode3_搜索二维矩阵 II

本文介绍了一种利用分治策略在特定矩阵中查找目标值的方法。该矩阵的特点是每一行的元素从左到右递增,每一列的元素从上到下递增。通过比较矩阵左下角元素与目标值,逐步缩小搜索范围直至找到目标或确认目标不存在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分治算法
算法描述
左下角的元素是这一行中最小的元素,同时又是这一列中最大的元素。比较左下角元素和目标:
若左下角元素等于目标,则找到
若左下角元素大于目标,则目标不可能存在于当前矩阵的最后一行,问题规模可以减小为在去掉最后一行的子矩阵中寻找目标
若左下角元素小于目标,则目标不可能存在于当前矩阵的第一列,问题规模可以减小为在去掉第一列的子矩阵中寻找目标
若最后矩阵减小为空,则说明不存在
---------------------
原文:https://blog.youkuaiyun.com/qq_32142535/article/details/78014870


代码:

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int len_i,len_j;
        len_i=matrix.size();
        len_j=len_i>0?matrix[0].size():0;
        int index_i=0;
        int index_j=len_j-1;
        while(index_i<len_i&&index_j>=0)
        {
            if(target==matrix[index_i][index_j])    return true;
            else if(target>matrix[index_i][index_j])    index_i++;
            else    index_j--;
        }
        return false;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值