搜索二维矩阵

我们先来看题目描述:

常规思路是进行二分查找,此时就能看到一个奇妙的解法,代码如下:

复制代码
class Solution {
public:
    bool searchMatrix(https://zhida.zhihu.com/search?content_id=214174621&content_type=Article&match_order=1&q=vector&zhida_source=entity<vector<int>>& matrix, int target) {
        if(matrix.size() == 0 || matrix[0].size() == 0) return false;
        int i = 0, j = matrix[0].size()-1; // start at the end of first row
        while(i < matrix.size() && j >= 0){ // initially, matrix[i][j] represents the max of each row
            if(matrix[i][j] == target) return true;
            if(matrix[i][j] < target) i++; // if max of row < target, move down a row
            else j--; // you're in the right row, so traverse backwards through the row
        }
        return false; 
    }
};

实际上,基本思路就是从矩阵第一行最右侧开始查找,当前值比 target 大往左走,比 target 小的话往下走。

好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!

相关推荐
电院工程师1 小时前
轻量级密码算法CHAM的python实现
python·嵌入式硬件·算法·安全·密码学
@老蝴7 小时前
C语言 — 通讯录模拟实现
c语言·开发语言·算法
L-ololois7 小时前
【AI】模型vs算法(以自动驾驶为例)
人工智能·算法·自动驾驶
安全系统学习9 小时前
网络安全之RCE简单分析
开发语言·python·算法·安全·web安全
GEEK零零七11 小时前
Leetcode 3299. 连续子序列的和
算法·leetcode·动态规划
飞飞是甜咖啡11 小时前
【机器学习】Teacher-Student框架
人工智能·算法·机器学习
蒟蒻小袁11 小时前
力扣面试150题--单词接龙
算法·leetcode·面试
ghie909011 小时前
LMD分解通过局部均值分解重构信号实现对信号的降噪
算法·均值算法·重构
零叹12 小时前
篇章十 数据结构——排序
java·数据结构·算法·排序算法
云云32112 小时前
亚矩阵云手机针对AdMob广告平台怎么进行多账号的广告风控
大数据·网络·线性代数·游戏·智能手机·矩阵