栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

240. 搜索二维矩阵 II

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

240. 搜索二维矩阵 II

题目:

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

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

试例 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:

输入: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>& 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=0) // 防止越界
        {
            if(matrix[i][j]>target) j--;
            else if(matrix[i][j] < target) i++;
            else if(matrix[i][j] == target) return true;
        }     
        return false;
    }
};

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/698210.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号