240 搜索二维矩阵 II

解题思路:
\qquad 解这道题最重要的是如何利用从左到右、从上到下为升序的性质,快速找到目标元素。
\qquad 如果从左上角开始查找,如果当前matrix[i][[j] < target,可以向右、向下扩展元素都是升序,但选择哪个方向是不明确的,很容易陷入局部最优而找到不到全局最优解。
\qquad 所以需要改变查找的起始位置,使一个方向为升序,而另一个为降序,比如右上角,向下为升序而向左为降序。当matrix[i][j] > target时,向左移动;当matrix[i][j] < target时,向下移动,不断逼近目标,且遍历路径不会重复,时间复杂度为 O ( m + n ) O(m+n) O(m+n)。

cpp 复制代码
bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int i = 0, j = matrix[0].size()-1;
        while(i < matrix.size() && j >= 0)
        {
            if(matrix[i][j] == target) return true;
            else if(matrix[i][j] < target) i++;
            else j--;
        }
        return false;
    }
相关推荐
凉茶钱4 小时前
多态:从虚函数语法到虚表寻址,一次讲透动态绑定
开发语言·c++·多态
Navigator_Z4 小时前
LeetCode //C - 1311. Get Watched Videos by Your Friends
c语言·算法·leetcode
01二进制代码漫游日记4 小时前
[C++]之内存管理(一)
jvm·c++·学习
codebolt5 小时前
C++程序crash分析和内存检测
开发语言·c++
ShineWinsu5 小时前
对于Qt:QLabel常见属性的解析
c++·qt·面试·笔试·gui·标签·qlabel
Pniubi5 小时前
力扣42接雨水(动态规划法)
算法·leetcode·职场和发展
zwc32104320555 小时前
Day 5:threshold与inRange阈值分割
c++·图像处理·人工智能·opencv·算法·计算机视觉
小徐不徐说5 小时前
数据库存储基础:理解表结构、主键、事务与 BLOB
开发语言·数据库·c++·qt·程序设计
Pniubi5 小时前
力扣46全排列(回溯(递归))
算法·leetcode·职场和发展
草莓熊Lotso6 小时前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生