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;
    }
相关推荐
Navigator_Z2 分钟前
LeetCode //C - 1291. Sequential Digits
c语言·算法·leetcode
WL学习笔记1 小时前
C & C++ 内存管理
c++·c++内存管理
宛 禾3 小时前
Qt 控件入门:QLabel 从拖拽到对象树,一篇讲透
c++·qt·学习
hetao17338374 小时前
联盟场-提高组-R7 & ZYZSC-S-Round 11
c++·算法
程序喵大人4 小时前
【C++入门】编译链接模型 - 07 链接器怎样把符号对上号
开发语言·c++·编译器·编译链接·链接器
局部有解4 小时前
Hot100 - 三数之和
数据结构·c++·算法
longlongzihan4 小时前
C++ 常用数据结构速查:vector、stack、queue、list、树、图、哈希表等声明与核心操作
数据结构·c++·list
别动我齐刘海5 小时前
实时控制学习2
linux·c++·人工智能·学习·算法
0+1115 小时前
算法 --栈
算法·leetcode
圣保罗的大教堂5 小时前
leetcode 3723. 数位平方和的最大值 中等
leetcode