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

【算法】山脉数组的峰顶索引

难度:中等

题目描述:

给定一个长度为 n 的整数 山脉 数组 arr ,其中的值递增到一个 峰值元素 然后递减。
返回峰值元素的下标。

你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。

示例 1:

输入:arr = [0,1,0]
输出:1

示例 2:

输入:arr = [0,2,1,0]
输出:1

示例 3:

输入:arr = [0,10,5,2]
输出:1

解题思路:

JavaScript实现:

第一种写法:

/*** @param {number[]} arr* @return {number}*/
var peakIndexInMountainArray = function (arr) {let left = 1let right = arr.length - 2while (left <= right) {let mid = left + ((right - left) >> 1)if (arr[mid] > arr[mid + 1] && arr[mid] > arr[mid - 1]) {return mid} else if (arr[mid] > arr[mid + 1] && arr[mid] < arr[mid - 1]) {right = mid - 1} else if (arr[mid] < arr[mid + 1]) {left = mid + 1}}
};

第二种写法:

var peakIndexInMountainArray = function (arr) {let left = 0let right = arr.length - 1while (left < right) {let mid = Math.floor((right + left) / 2 )if (arr[mid] < arr[mid + 1]) {left = mid + 1} else {right = mid}}return left
};

tips:可以依据题目条件,利用二分查找适当缩小查找范围

相关文章:

【算法】山脉数组的峰顶索引

难度&#xff1a;中等 题目描述&#xff1a; 给定一个长度为 n 的整数 山脉 数组 arr &#xff0c;其中的值递增到一个 峰值元素 然后递减。 返回峰值元素的下标。 你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。 示例 1&#xff1a; 输入&#xff1a;arr [0,1,0]…...

牛客 JZ31.栈的压入,弹出序列 C++写法

牛客 JZ31.栈的压入&#xff0c;弹出序列 C写法 思路&#x1f914;&#xff1a; 创建一个栈&#xff0c;push压入序列&#xff0c;然后用栈顶跟弹出序列比&#xff0c;如果一样就出栈并且继续比较&#xff0c;不一样就再次push入栈&#xff0c;直到压入序列走完&#xff0c;如果…...

PageHelper在Mybatis的一对多表关联时total数错误

最近在学习PageHelper遇到一个bug记录一下&#xff1a; 在Mybatis的一对多表中&#xff0c;PageHelper获取的total是所有的记录数&#xff0c;而不是我想要的第一次sql的记录数。 解决方案1&#xff1a; 不要在mapper层获取一对多关联&#xff0c;在service层先获取一&#…...

(20240806)硫氧镁 / 碱式硫酸镁-混凝土

一、目录 一篇博士论文&#xff0c;5篇硕士论文&#xff0c;南京航空航天大学双一流211&#xff0c;60。余红发团队 具体涉及到 &#xff08;1&#xff09; 碱式硫酸镁水泥的混凝土应用 、&#xff08;一篇博士论文&#xff09; 有微观分析 &#xff08;2&#xff09;混…...

string类的模拟实现(C++)

一、前言 想要模拟实现一个库中的类&#xff0c;那就要首先要熟悉如何使用这个类。建议通过下面博客&#xff0c;完成对Cstring类的学习。 C的string类-CSDN博客 二、模拟实现 我们将从string的成员函数即成员变量入手&#xff0c;模拟实现string类。 成员变量 string类的…...

C++_sizeof的相关知识点

1.指针的大小永远是固定的&#xff0c;取决于处理器位数&#xff0c;32位就是 4 字节&#xff0c;64位就是 8 字节 2.数组作为函数参数时会退化为指针&#xff0c;大小要按指针的计算 int func(char array[]) {printf("sizeof%d\n", sizeof(array));printf("s…...

Istio Proxy的Envoy代理架构中,Upstream提供的功能是:

Istio Proxy的Envoy代理架构中&#xff0c;Upstream提供的功能是&#xff1a; A. 接收来自Envoy连接和请求的主机&#xff0c;并返回响应 B. 连接的一组逻辑相同的上游主机 C. 将下游主机连接到Envoy的主机&#xff0c;用来发送请求并接受响应 选择A Istio Proxy的Envoy代理架…...

LeetCode 热题 HOT 100 (015/100)【宇宙最简单版】

【栈】No. 0155 最小栈【中等】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#xff01; …...

【HarmonyOS】鸿蒙应用实现截屏

【HarmonyOS】鸿蒙应用实现截屏 组件截屏 通过componentSnapshot的get函数&#xff0c;将需要截图的组件设置id传进去即可。 import { componentSnapshot } from kit.ArkUI; import { image } from kit.ImageKit;/*** 截图*/ Entry Component Preview struct SnapShotPage {S…...

Conda包依赖侦探:conda inspect命令全解析

Conda包依赖侦探&#xff1a;conda inspect命令全解析 在Conda环境中&#xff0c;管理包及其依赖关系是一项重要任务。conda inspect命令是一个强大的工具&#xff0c;它可以提供包的详细信息&#xff0c;包括依赖关系、链接、版本等。这对于诊断环境问题、理解包的依赖结构以…...

数模——灰色关联分析算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、基本概念了解 1.什么是灰色系统&#xff1f; 2.什么是关联分析&#xff1f; 二、模型原理 三、建模过程 1.找母序列&#xff08;参考序列&am…...

Python爬虫技术 第27节 API和RESTful服务

Python 爬虫技术是一种自动化获取网页内容的方法&#xff0c;通常用于数据收集、信息抽取或自动化测试。在讲解 Python 爬虫技术时&#xff0c;我们通常会涉及到以下几个关键概念&#xff1a; HTTP 请求&#xff1a;爬虫通过发送 HTTP 请求来获取网页内容&#xff0c;这是爬虫与…...

音视频入门基础:WAV专题(4)——FFmpeg源码中获取WAV文件音频压缩编码格式、采样频率、声道数量、采样位数、码率的实现

音视频入门基础&#xff1a;WAV专题系列文章&#xff1a; 音视频入门基础&#xff1a;WAV专题&#xff08;1&#xff09;——使用FFmpeg命令生成WAV音频文件 音视频入门基础&#xff1a;WAV专题&#xff08;2&#xff09;——WAV格式简介 音视频入门基础&#xff1a;WAV专题…...

环境变量在Conda中的魔法:控制包安装的秘诀

环境变量在Conda中的魔法&#xff1a;控制包安装的秘诀 Conda不仅是Python和其他语言包的包管理器&#xff0c;它还是一个强大的环境管理器。在使用Conda时&#xff0c;环境变量可以极大地增强其功能&#xff0c;允许用户控制包的安装过程&#xff0c;实现定制化的安装策略。本…...

VS Code C/C++ MSVC编译器

官方教程 通过快捷方式打开VS Code是编译不了的,需要对tasks.json修改(Tasks: Configure default build task) 先创建tasks.json 复制这段配置到tasks.json,记得修改VsDevCmd.bat的路径 {"version": "2.0.0","windows": {"options"…...

【技巧】IDEA 个性化配置

【技巧】IDEA 个性化配置 自动补全 关闭大小写区分 自动导包 插件 Rainbow Brackets 彩色括号 更容易区分是哪个括号...

`pytest` 中一些常用的选项

下面列出的参数和功能涵盖了 pytest 中一些常用的选项&#xff0c;但 pytest 还有许多其他参数和功能。以下是一些补充的 pytest 命令行参数和功能&#xff1a; 其他命令行参数 测试配置 --confcutdir<path>: 只加载指定目录及其子目录中的配置文件。例如 --confcutdirs…...

fme从json中提取位置到kml中

fme从json中提取位置到kml中 简单参考,我自己要用的,越弄越复杂。 概述-模板总体结构 数据就是官方提供的数据,模板的基本节结构是读模块+转换器+写模块,最近爬取一些json文件,用到了。 1.使用json读模块读取数据 首先检查一下源数据 使用文本打开数据集,可以看到非缩…...

在Ubuntu 18.04上安装和配置pgAdmin 4服务器模式的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 pgAdmin 是一个针对 PostgreSQL 及其相关数据库管理系统的开源管理和开发平台。它使用 Python 和 jQuery 编写&#xff0c;支持 P…...

NiFi :1 初识这把“十年一剑”的利器

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- “现在AI和数据处理密不可分&#xff0c;80%的企业可以利用Apache NiFi轻松解决复杂的数据问题&#xff0c;快速完成场景建设。犹如花上百来块钱在家享受一顿不亚于五星级西餐厅的法式大餐。对…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...

LangChain【6】之输出解析器:结构化LLM响应的关键工具

文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器&#xff1f;1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…...

Linux中INADDR_ANY详解

在Linux网络编程中&#xff0c;INADDR_ANY 是一个特殊的IPv4地址常量&#xff08;定义在 <netinet/in.h> 头文件中&#xff09;&#xff0c;用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法&#xff0c;允许套接字监听所有本地IP地址上的连接请求。 关…...

构建Docker镜像的Dockerfile文件详解

文章目录 前言Dockerfile 案例docker build1. 基本构建2. 指定 Dockerfile 路径3. 设置构建时变量4. 不使用缓存5. 删除中间容器6. 拉取最新基础镜像7. 静默输出完整示例 docker runDockerFile 入门syntax指定构造器FROM基础镜像RUN命令注释COPY复制ENV设置环境变量EXPOSE暴露端…...