【Leetcode】74. Search a 2D Matrix

news/2024/7/7 15:00:49

题目地址:

https://leetcode.com/problems/search-a-2d-matrix/

给定一个 m × n m\times n m×n的矩阵 A A A,每行单调上升,并且每行的末项都小于下一行的首项。另给定一个数,问这个数是否在矩阵里。

思路是二分法,可以将整个矩阵看成一整条单调上升的数组,只需要建立一个一维到二维的映射就可以了。若 A [ m ] [ n ] A[m][n] A[m][n] m m m n n n列,将每行从第 0 0 0行到第 m − 1 m-1 m1行按顺序前后拼起来成为一个长数组,那么长数组的下标 t t t对应在矩阵里的下标为 ( t / n , t % n ) (t/n,t\%n) (t/n,t%n)。接下来只要二分就行了。代码如下:

class Solution {
 public:
  bool searchMatrix(vector<vector<int>>& A, int t) {
    int n = A[0].size();
    int l = 0, r = (int)A.size() * n - 1;
    if (l > r) return false;
    while (l < r) {
      int mid = l + (r - l >> 1);
      int x = mid / n, y = mid % n;
      if (A[x][y] >= t) r = mid;
      else l = mid + 1;
    }

    return A[l / n][l % n] == t;
  }
};

时间复杂度为 O ( log ⁡ ( n m ) ) O(\log (nm)) O(log(nm)),空间 O ( 1 ) O(1) O(1)


http://www.niftyadmin.cn/n/3647487.html

相关文章

StringBoot编程式事务与声明式事务,给大家安排上!

一、前言 长文警告&#xff0c;事实上我不愿意写太长的文章&#xff0c;一面是太冗余&#xff0c;一方面读者容易疲倦&#xff0c;但是只要是涉及到源码级别的&#xff0c;就肯定篇幅不短&#xff0c;因为太短肯定没意义也解释不清楚&#xff0c;但是相信&#xff0c;耐心看完这…

窗口淡入淡出效果的实现

1. 简介函数: SetLayeredWindowAttributes HeaderDeclared in Winuser.h, include Windows.hImport libraryUser32.libMinimum operating systemsWindows 2000所以在98系统下&#xff0c;并不支持2. 属性现在我们直接通过DLL来调用,所以未包含头文件,可以直接使用值来操作.以下…

“金三银四”春招指南!靠着这份面试题跟答案,就是这么简单

前言 为什么要读Spring源码&#xff0c;有的人为了学习Spring中的先进思想&#xff0c;也有的人是为了更好的理解设计模式&#xff0c;当然也有很大一部分小伙伴是为了应付面试&#xff0c;Spring Bean的生命周期啦&#xff0c;Spring AOP的原理啦&#xff0c;Spring IoC的原理…

进程调试--数组溢出,影响其他变量

一直做的棋牌系统,调试是个问题,因为要启动的是另一个进程.所以一直多是以输出文件的方式来进行的.确实有些BUG输出文件的方式并不能解决和找到问题.我先来描述一下碰到的问题: 其中一个int m_nSize变量一般只有两个值(0或者1),在运行过程过突然变成-1,所以造成图片数组导入异…

【一步教学,一步到位】三分钟搞定分布式结构服务部署发布,实战案例

开头 消息队列 RocketMQ 是阿里巴巴集团基于高可用分布式集群技术&#xff0c;自主研发的云正式商用的专业消息中间件&#xff0c;既可为分布式应用系统提供异步解耦和削峰填谷的能力&#xff0c;同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性&#xff0c;…

tensorboard命令行使用方法

第一步&#xff1a;进入虚拟环境 conda activate 虚拟环境名称 第二步&#xff1a; tensorboard --logdir绝对地址 第三步&#xff1a;在浏览器输入提供的网址

RichEdit中插入GIF动画(使用QQ的ImageOle.dll)

最近做聊天记录,需要显示GIF动画.看了很多文章&#xff0c;基本多是用QQ的ImageOle.dll或者Gif89a.dll来实现.当然还有其他方法,包括Static控件中使用CPictureEx来实现GIF.ImageOle.dll使用了GdiPlus.dll,制作安装包时最好把这个dll也带上( XP系统自带)(本文的代码来自其他网友…

【Leetcode】48. Rotate Image

题目地址&#xff1a; https://leetcode.com/problems/rotate-image/ 给定一个方阵&#xff0c;返回将它顺时针旋转9090\degree90的方阵。可以先将其转置&#xff0c;然后再按照第二列做对称轴左右翻转即可。 public class Solution {public void rotate(int[][] matrix) {f…