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

LeetCode 1901.寻找峰值2

一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。

给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 mat[i][j] 并 返回其位置 [i,j] 。

你可以假设整个矩阵周边环绕着一圈值为 -1 的格子。

要求必须写出时间复杂度为 O(m log(n)) 或 O(n log(m)) 的算法

示例 1:

在这里插入图片描述

输入: mat = [[1,4],[3,2]]
输出: [0,1]
解释: 3 和 4 都是峰值,所以[1,0]和[0,1]都是可接受的答案。
示例 2:

在这里插入图片描述

输入: mat = [[10,20,15],[21,30,14],[7,16,32]]
输出: [1,1]
解释: 30 和 32 都是峰值,所以[1,1]和[2,2]都是可接受的答案。

提示:

m == mat.length
n == mat[i].length
1 <= m, n <= 500
1 <= mat[i][j] <= 105^55
任意两个相邻元素均不相等.

如何找到一个山顶?我们可以从某个点出发,一直往四周最大的那个格子移动,那么最终一定会到达山顶。因此我们可以对行进行二分,如果当前二分到的行中的最大值比上下相邻格子的值都大,那么它就是一个山顶,否则往大值的方向继续二分即可:

class Solution {
public:vector<int> findPeakGrid(vector<vector<int>>& mat) {int rowNum = mat.size();int colNum = mat[0].size();int l = 0;int r = rowNum - 1;while (l <= r) {int m = l + (r - l) / 2;int maxIdx = max_element(mat[m].begin(), mat[m].end()) - mat[m].begin();if ((m == 0 || mat[m - 1][maxIdx] < mat[m][maxIdx]) && (m == rowNum - 1 || mat[m + 1][maxIdx] < mat[m][maxIdx])) {return {m, maxIdx};} else if (mat[m + 1][maxIdx] > mat[m][maxIdx]) {l = m + 1;} else {r = m - 1;}}return {-1, -1};}
};

如果mat有m行n列,则此算法时间复杂度为O(nlogm),空间复杂度为O(1)。

http://www.dtcms.com/a/532022.html

相关文章:

  • 沈阳建设网站费用北京网站优化软件
  • 【Android】【底层原理】深入解析SELinux模块
  • 阮一峰《TypeScript 教程》学习笔记——注释指令
  • 最好的开发网站建设价格app免费制作平台下载
  • 供应链进销存源码uniapp全开源ERP多仓库管理系统pc+app手机端
  • 生物化学Learning Track(15)酶活性的调节
  • 站酷设计网站官网入口下载国外手机设计网站
  • Rust 泛型与特性
  • GPT-1 技术报告
  • 中英双语 网站 模板wordpress返佣
  • 机器学习库的决策树绘制
  • k8s的calico出现ipset报错解决方法
  • SimpleDateFormat
  • 网站后期的维护和更新池州网站建设推广
  • 低空经济的实时神经系统:空地一体化音视频架构的技术演进
  • 更换MacbookAir固态硬盘,并用U盘安装MacOS操作系统
  • 创建一个简单的SpringBoot
  • 硅基计划2.0 学习总结 玖 图书管理系统 2.0复盘版(文字末尾源码可复制)
  • 河北省建设信息网站十种营销方法
  • qt调用摄像头进行yolo的实时检测
  • 网站备案通过什么可以备案wordpress熊掌号插件
  • IntelliJ IDEA 使用 Lombok 报错:“Lombok requires enabled annotation processing” 解决方案
  • qtmqtt: 一个开源且好用的mqtt开源客户端
  • 数据仓库——总线架构详解
  • 软件中锁机制全解析:从线程到分布式锁
  • 郴州网站设计做外墙资料的网站
  • 【Swift】LeetCode 238.除自身以外数组的乘积
  • GitLab
  • GitHub等平台形成的开源文化正在重塑继任者
  • 【区块链学习笔记】17:以太坊中的GHOST协议