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

【LeetCode240.搜索二维矩阵Ⅱ】以及变式

题目链接

240. 搜索二维矩阵 II - 力扣(LeetCode)

实现思路

  • 利用行有序、列有序的特点,可以从右上角或者左下角开始判断,以左下角为例,如果小于目标值就向右移动,也就排除了一列;如果大于目标值就向上移动,也就排除了一行。时间复杂度为O(m+n)。
    • 为什么不从左上角或者右下角判断呢,以右下角为例,如果小于目标值,这个矩阵的最大值小于目标值,说明肯定就找不到目标值,如果大于目标值,可以向左也可以向上,移动的方向不唯一。
  • (之前想的是每次遍历一行,然后二分找,但是这样时间复杂度是O(mlogn))。

代码实现

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

变式

  • 如果存在重复元素,找最小下标呢?这里所说的最小下标指的是行优先,也就是i越小认为下标越小。
class Solution {
public:vector<int> searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size();int n = matrix[0].size();int i = 0, j = n - 1;while (true) {if (matrix[i][j] > target) {j--;} else if (matrix[i][j] < target) {i++;} else {int left = target + 1;if (j - 1 >= 0) {left = matrix[i][j - 1];}if (left == target) {j--;} else {return {i, j};}}if (i == m || j == -1) {break;}}return {-1, -1};}
};

http://www.lryc.cn/news/587525.html

相关文章:

  • 传统机器学习在信用卡交易预测中的卓越表现:从R²=-0.0075到1.0000的华丽转身
  • 【Hadoop科普篇】大数据怎么处理?Hadoop是什么?跟HDFS, Spark, Flink, Hive, Hbase是什么关系?
  • React Three Fiber 实现 3D 模型视图切换、显隐边框、显隐坐标轴
  • JavaScript 性能优化实战:深入性能瓶颈,精炼优化技巧与最佳实践
  • 如何彻底解决PLM/ERP/MES等系统访问速度慢问题?
  • ThinkPHP 8 在 Apache 下启用伪静态
  • .NET 9 GUID v7 vs v4:时间有序性如何颠覆数据库索引性能
  • 【python实用小脚本-139】Python 在线图片批量下载器:requests+PIL 一键保存网络图像
  • Docker 拉取镜像并离线迁移至云桌面指南(以Redis为例)
  • 2025 春秋杯夏季个人挑战赛 Web
  • Spark SQL 之 UT
  • 实战:如何创建 AWS RDS 数据库
  • Android 16k jni修改
  • 构建高效事件驱动架构:AWS S3与SQS集成实践指南
  • 如何连接 AWS RDS 数据库实例
  • AWS RDS PostgreSQL可观测性最佳实践
  • 2025最新android面试指南
  • (三)OpenCV——图像形态学
  • 爬虫-爬取豆瓣top250
  • Android 16系统源码_窗口动画(一)窗口过渡动画层级图分析
  • Android编译系统——基础介绍(一)
  • LVS集群技术
  • 17.Python 中的相等性比较:== vs is
  • 云原生核心技术解析:Docker vs Kubernetes vs Docker Compose
  • 深入了解linux系统—— 进程信号的保存
  • 数据可视化全流程设计指南
  • Vue 低代码可视化表单设计器 FcDesigner v3.3 版本发布!表格布局升级+精细化权限控制
  • 前端常见十大问题讲解
  • Spark 之 like 表达式
  • SpringMVC4