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

leetcode 74. Search a 2D Matrix

题目描述

要求时间复杂度必须是log(m*n)。那么对每一行分别执行二分查找就不符合要求,这种做法的时间复杂度是m*log(n)。

方法一,对每一行分别执行二分查找:

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size();int n = matrix[0].size();for(int i = 0;i < m;i++){if(binary_search(matrix[i],0,n-1,target))return true;}return false;}bool binary_search(vector<int> row,int left,int right,int target){int mid = 0;while(left <= right){mid = left + ((right-left)>1);if(row[mid] == target)return true;else if(row[mid] > target){right = mid-1;}else{left = mid+1;}}return false;}
};

 方法二,对整个矩阵执行二分查找,关键是要将整体的序号映射到行和列的下标:

时间复杂度log(m*n),符合要求。

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size();int n = matrix[0].size();int left = 0;int right = m*n-1;int mid = 0;int row = 0;int column = 0;while(left<=right){mid = left+((right-left)>>1);row = mid/n;column = mid%n;if(matrix[row][column] == target)return true;else if(matrix[row][column] > target){right = mid -1;}else{left = mid + 1;}}return false;}
};

http://www.xdnf.cn/news/528823.html

相关文章:

  • SQL注入——Sqlmap工具使用
  • 实景VR展厅制作流程与众趣科技实景VR展厅应用
  • Assistants API
  • upload-labs靶场通关详解:第10关
  • 项目QT+ffmpeg+rtsp(三)——延迟巨低的项目+双屏显示
  • FPGA 串口_波特率计算
  • 使用Python和FastAPI构建网站爬虫:Oncolo医疗文章抓取实战
  • [学习]POSIX消息队列的原理与案例分析(完整示例代码)
  • 循环神经网络:揭秘RNN的核心与应用
  • 设计模式的原理及深入解析
  • 人工智能100问☞第27问:神经网络与贝叶斯网络的关系?
  • Spring Boot 的高级特性与经典的设计模式应用
  • Flink 非确定有限自动机NFA
  • reserve学习笔记(花指令)
  • 用Python构建学生成绩管理系统的基本方案
  • 系统架构设计师考前冲刺笔记-第3章-软件架构设计
  • 《JVM如何判断一个对象可以被回收?图文详解GC Root算法》
  • Windows 下 Qt 项目配置 FFmpeg 简明指南
  • 使用docker——10分钟内 完成一个高可用的 MongoDB 副本集部署
  • 代理IP高可用性与稳定性方案:负载均衡、节点健康监测与智能切换策略
  • python链接数据库
  • 线程调度与单例模式:wait、notify与懒汉模式解析
  • Excel
  • Vue 中 v-model 的三种使用方式对比与实践
  • B/S架构和C/S架构的介绍与分析
  • UE 材质几个输出向量节点
  • 嵌入式51单片机:C51
  • Qt—模态与非模态对话框
  • 板凳-------Mysql cookbook学习 (四)
  • 分布式天线系统 (DAS, Distributed Antenna System)