240. 搜索二维矩阵 II

题目:

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

试例 1:
例1示意图

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true

试例 2:
试例 2图

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出:false

主要思路: 读懂题意后需要明确 1. 开始寻找的位置, 2. 当遍历到的数比目标数字大时, 该如何移动? 3. 当遍历到的数比目标数字小时, 该如何移动?
故此题开始寻找的位置最好是左下角或者是右上角, 为何这样说呢? 此处拿右上角为开始寻找的位置来说吧, 当遍历到的数字比寻找的目标数字大时, 我们可以往右继续去寻找数字; 若遍历到的数字比寻找的目标数字小时, 我们可以往下继续寻找数字。

class Solution {
public:
    bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
        if(matrix.size() == 0) return false; // 若二维数组为空
        int row = matrix.size(); // 获取二维数组的行数
        int col = matrix[0].size(); // 获取二维数组的列数
        int i = 0, j = col-1;
        while(i<row && j>=0) // 防止越界
        {
            if(matrix[i][j]>target) j--;
            else if(matrix[i][j] < target) i++;
            else if(matrix[i][j] == target) return true;
        }     
        return false;
    }
};

欢迎大家前来观看, 如果有更好的思路或想法, 欢迎各位在下方评论区留言噢, 谢谢大家~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Michael 2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值