LeetCode 每日一题 Day 17 || 二分

1901. 寻找峰值 II

一个 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
  • 任意两个相邻元素均不相等.

先给出代码:

class Solution {
public:std::vector<int> findPeakGrid(std::vector<std::vector<int>>& mat) {int m = mat.size();int n = mat[0].size();int left = 0, right = n - 1;while (left < right) {int mid = left + (right - left) / 2;int maxRow = 0;for (int i = 0; i < m; ++i) {if (mat[i][mid] > mat[maxRow][mid]) {maxRow = i;}}if (mat[maxRow][mid] < mat[maxRow][mid + 1]) {left = mid + 1;} else {right = mid;}}int peakRow = 0;for (int i = 0; i < m; ++i) {if (mat[i][left] > mat[peakRow][left]) {peakRow = i;}}return {peakRow, left};}
};

二分找峰值,先找到当前最大所在,然后比较该相邻的值,确定二分方向之后峰值就好找了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/288574.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 如何实现拖动:vue-draggable

vue-draggable 官方文档&#xff1a;传送门 特点&#xff1a; 支持触摸设备&#xff08;如vue项目的移动端开发Quasar&#xff09;支持拖拽和选择文本支持不同列表之间的拖拽视图模型的同步刷新与vue2的过渡动画&#xff08;transition-group&#xff09;兼容有很多监听函数…

Python MySQL数据库连接实现增删改查

一、应用场景 python项目连接MySQL数据库时&#xff0c;需要第三方库的支持。这篇文章使用的是PyMySQL库&#xff0c;适用于python3.x。 二、安装 pip install PyMySQL三、使用方法 1.导入模块 import pymysql2.连接数据库 db pymysql.connect(hostlocalhost,usercode_s…

甄选的董宇辉,颠覆新东方?

董宇辉又被推向浪尖。 一年前&#xff0c;新东方老师董宇辉出现在东方甄选主播间&#xff0c;用边带货边教英文的方式爆火出圈&#xff0c;成为了东方甄选的活招牌。一年后&#xff0c;一条常规宣发物料引发一场巨大的舆情风波&#xff0c;董宇辉“小作文”事件如闹剧般展开&a…

Java研学-Tomcat服务器

一 Web资源 1 概述 浏览器网页上看到的所有内容都称为web资源&#xff0c;比如文字&#xff0c;图片&#xff0c;音频&#xff0c;视频&#xff0c;链接等等内容。 2 Web资源分类 分类概述使用的技术静态资源静态资源是相对于动态资源而言&#xff0c;是指没有后台数据库、不…

3ds Max渲染贴图丢失?这样操作就能搞定!

当你在使用3ds Max进行渲染时&#xff0c;有时候会遇到贴图丢失的问题&#xff0c;导致模型无法正常显示。这可能是因为你在导入模型或添加贴图时出现了一些错误。不过不用担心&#xff0c;接下来我将向你解释这个问题可能出现的几种原因&#xff0c;同时提供有效的解决方案。 …

视觉问答学习(对比学习-3D点云)

1、基于对比学习的方法 自监督学习&#xff0c;不需要人工标注的类别标签信息&#xff0c;而是利用数据本身提供的监督信息来学习样本数据的特征表达&#xff0c;并用于下游任务。在视觉语言表示学习中&#xff0c;通过对比学习实现图像-文本对齐&#xff0c;这种对齐策略能够…

Web请求与响应

目录 Postman Postman简介 Postman的使用 请求 简单参数 实体参数 数组参数 集合参数 日期参数 Json参数 路径参数 响应 ResponseBody 统一响应结果 Postman Postman简介 postman是一款功能强大的网页调试与发送网页http请求的Chrome插件&#xff0c;常用于进行…

怎么压缩图片大小?

怎么压缩图片大小&#xff1f;图片可以说是现在大家绕不开的一种文件&#xff0c;在我们日常的生活和工作中&#xff0c;图片大小成为了一个经常需要处理的问题。无论是在文件插入、上传还是发送图片时&#xff0c;我们往往都会受到图片大小的限制。现在不管手机还是相机的像素…

2 python基本语法 - Tuple不可变序列

1 元组的概念 元组&#xff08;tuple&#xff09;是一个有序且不可更改的集合&#xff0c;允许重复。元组&#xff08;tuple&#xff09;是 Python 中一个重要的序列结构&#xff0c;和列表类似&#xff0c;元组也是由一系列按特定顺序排序的元素组成。元组和列表&#xff08;…

基于Redis限流(aop切面+redis实现“令牌桶算法”)

令牌桶算法属于流量控制算法&#xff0c;在一定时间内保证一个键&#xff08;key&#xff09;的访问量不超过某个阈值。这里的关键是设置一个令牌桶&#xff0c;在某个时间段内生成一定数量的令牌&#xff0c;然后每次访问时从桶中获取令牌&#xff0c;如果桶中没有令牌&#x…

【物联网无线通信技术】WiFi从理论到实践(ESP8266)

文章从理论基础到具体实现完整的介绍了最常见的物联网无线通信技术&#xff1a;WiFi。 文章首先介绍了WiFi这种无线通信技术的一些基本概念&#xff0c;并针对其使用的802.11协议的基本概念与其定义的无线通信连接建立过程进行了简单的介绍&#xff0c;然后对WiFi开发常常涉及的…

米游社区表情包整合网站源码

源码介绍 米游社表情包整合网站源码&#xff0c;来自Github大佬的项目&#xff0c;包含米游兔123枚&#xff0c;米游社 玩家12枚&#xff0c;崩坏 星穹铁道112枚&#xff0c;绝区零218枚&#xff0c;NAP32枚&#xff0c;崩坏RPG62枚&#xff0c;崩坏3-1282枚&#xff0c;原神 …