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;
    }
相关推荐
To_OC5 小时前
LC 35 搜索插入位置:二分查找谁都会,边界条件谁写谁懵
javascript·算法·leetcode
啊啊啊啊啊!!!!9 小时前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++
(Charon)11 小时前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++
evans在进步12 小时前
LeetCode 189 轮转数组:三次反转原地解决,图解 Java 实现
java·算法·leetcode
ShineWinsu12 小时前
对于Linux:五种IO模型以及非阻塞IO的详细解析
linux·c++·面试·io·阻塞·非阻塞·fcntl
呜喵王阿尔萨斯13 小时前
extern “C“ in C++
c语言·c++·算法
乐观勇敢坚强的老彭13 小时前
C++信奥静态数组和动态数组
数据结构·c++·算法
gumichef14 小时前
第一章:面向对象核心——类和对象深度讲解
开发语言·c++
ao-weilai14 小时前
C++基础:类和对象
开发语言·c++
郝学胜-神的一滴14 小时前
[简化版 GAMES 104] 现代游戏引擎 04:从0到1构建你的游戏世界
c++·游戏·unity·游戏引擎·软件工程·unreal engine