当前位置: 首页 > article >正文

leetcode热题100(240. 搜索二维矩阵 II)c++

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

示例 1:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true

示例 2:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出:false

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= n, m <= 300
  • -109 <= matrix[i][j] <= 109
  • 每行的所有元素从左到右升序排列
  • 每列的所有元素从上到下升序排列
  • -109 <= target <= 109

思路

因为题目说每行的所有元素从左到右升序排列和每列的所有元素从上到下升序排列

所以我们知道该数组已经是单调往下递增了,就可以理解为当前元素在(i,j)这个坐标位置,那么该元素在前(i,j)坐标位置为最大值。

那么我们就可以利用这个特点,设 x表示行,y表示列。起始 x = 0,y=m-1,要是当前元素大于target,那么我们的y只能缩小了,否则小于target,x增大,要是找到等于直接返回了

代码

 

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& g, int target) {
        int n = g.size();
        int m = g[0].size();
        int x = 0, y = m-1;
        while(x<n && y>=0){
            if(g[x][y]==target) return true;
            if(g[x][y]>target) y--;
            else x++;
        }
        
        return false;
    }
};


http://www.kler.cn/a/454846.html

相关文章:

  • 一种寻路的应用
  • openGauss与GaussDB系统架构对比
  • JS 设置按钮的loading效果
  • C#控件开发3—文本显示、文本设值
  • 【已解决】pyinstaller打包ico图片报错:OSError: [WinError 225] 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。
  • 【MySQL】SQL 优化经验
  • 蓝桥杯——最小的或运算
  • 【MATLAB】股票(和指数)数据下载--雅虎财经
  • MyBatis X 插件只有xml文件目录显示图标的原因?
  • ARM学习(39)ARM-GCC编译出的Bin文件过大解决方案
  • 使用 OWASP Dependency-Check 扫描 Spring Framework 漏洞
  • YOLOv9-0.1部分代码阅读笔记-train.py
  • 数据库索引与 MVCC:原理、应用及事务隔离
  • 什么是Ceph?它的技术特点是什么?部署挑战及解决方案如何?
  • Joget研究——Joget8商业版部署
  • 2024-2030全球防臭包行业调研及趋势分析报告
  • Scrapy: log日志模块的设计详解下
  • Web漏洞之CSRF和SSRF
  • 支持向量机入门指南:从原理到实践
  • 前端图像处理(二)
  • docker 容器中没有ping命令和ifconfig命令和wget怎么办?
  • LeetCode-Z 字形变换(006)
  • layui动态拼接生成下拉框验证必填项失效问题
  • 曼哈顿图如何指定不同染色体不同的颜色
  • 【Linux命令】ps -a 和 ps -ef 的区别
  • MySQL 服务正在启动.MySQL 服务无法启动.服务没有报告任何错误。请键入 NET HELPMSG 3534 以获得更多的帮助。总结较全 (已解决)