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;
    }
相关推荐
一只齐刘海的猫7 分钟前
【Leetcode】 接雨水
java·算法·leetcode
星恒随风9 分钟前
C++ 类和对象入门(一):从 class、访问限定符到 this 指针
开发语言·c++·笔记·学习·状态模式
赵民勇11 分钟前
如何查看一个二进制程序是否设置了rpath或runpath?
linux·c++
Brilliantwxx12 分钟前
【C++】 哈希表 unordered_map 与 unordered_set(底层原理 + 线性哈希表代码实现)
开发语言·c++·散列表
菜菜的顾清寒33 分钟前
力扣HOT(100)54多维动态规划-最长公共子序列
算法·leetcode·动态规划
ouliten34 分钟前
C++笔记:C++20风格线程池
c++·笔记·c++20
weixin_4671822838 分钟前
Arduino进阶二|自定义类库保姆级教程(从零手写属于自己的传感器类库+完整源码)
c语言·c++·单片机·嵌入式硬件·arduino·c++面向对象·diy库文件
Highcharts.js1 小时前
通过CSS变量实现图表色彩与逻辑解耦、图表主题统一|Highcharts Palette 详解
c++·echarts·highcharts·可视化开发·palette·styledmode·图表样式
玖玥拾1 小时前
C/C++ 基础笔记(八)
c语言·c++
郝学胜_神的一滴1 小时前
Qt 高级开发 027: QTabWidget自定义样式表美化实战
c++·qt