leetcode 852. Peak Index in a Mountain Array(峰值索引)

news2024/12/23 22:09:24

在这里插入图片描述

一个数组保证是峰值数组(存在一个值大于左边和右边部分数组),找出峰值的index。
要求时间复杂度在O(logn)。

思路:

时间复杂度为O(logn), 可以想到用binary search.

其实用O(n)的找最大值也能通过。

    public int peakIndexInMountainArray(int[] arr) {
        int res = 0;
        int max = 0;
        for(int i = 0; i < arr.length; i++) {
            if(arr[i] > max) {
                max = arr[i];
                res = i;
            } 
        }
        return res;
    }

下面来说说binary search.
一般binary search要求数组升序排列,找某个特定元素,
这里峰值的前半段是升序排列,后半段是降序排列。
要找的是前半段的最大值,后半段的最小值。

只需让arr[mid]和它前后元素比较,
< 前一元素,说明峰值在左边,right = mid,
> > > 前一元素说明峰值在右边,left = mid+1(注意边界)。

    public int peakIndexInMountainArray(int[] arr) {
        int left = 0;
        int right = arr.length - 1;

        while(left < right) {
            int mid = left + (right-left)/2;
            if(arr[mid] > arr[mid+1]) right = mid;
            else left = mid+1;
        }
        return left;
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PysparkNote006---pycharm加载spark环境

pycharm配置pyspark环境&#xff0c;本地执行pyspark代码 spark安装、添加环境变量不提了 File-Settings-Project-Project Structure-add content root添加如下两个路径 D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip 2023-07-26 阴 于…

Python 基础总结

title: Python 基础总结 date: 2023-07-19 10:51:55 tags: Python categories:Python cover: https://cover.png feature: false 1. print() 函数 1.1 基础使用 # 输出数字 print(23) print(11.323)# 输出字符串 print(你好) print("你好")# 输出表达式 print(3 *…

C++-stack 和 queue

stack 和 queue介绍 两者分别是C当中的 栈和队列&#xff0c;只不过在C当中&#xff0c;这两者没有用传统的方式&#xff0c;比如顺序存储和链式存储来实现了&#xff0c;两者现在使用的是一种权限的方式来实现&#xff1b; 都是用容器适配器来实现&#xff0c;开发者考虑到&a…

PyToch 深度学习 || 3. 卷积神经网络 | 3.1 深度学习中的卷积操作

深度学习中的卷积操作 文章目录 深度学习中的卷积操作1. 卷积2. 一维卷积2.1 使用nn.functional库中conv1d2.2 使用nn库中的Conv1d 3. 二维卷积3.1 nn.functional.conv2d3.2 nn.Conv2d 1. 卷积 加权求和是一种非常重要的运算&#xff0c;可以整合局部数字特征进而是提取局部信…

Linux CentOS监控系统的运行情况工具 - top/htop/glances/sar/nmon

在CentOS系统中&#xff0c;您可以使用以下工具来监控系统的运行情况&#xff1a; 1. top&#xff1a; top 是一个命令行工具&#xff0c;用于实时监控系统的进程、CPU、内存和负载情况。您可以使用以下命令来启动 top&#xff1a; top 输出 2. htop&#xff1a; htop 是一…

WSL 2 环境配置

WSL 2 环境配置 wsl2是windows内置的linux子系统&#xff0c;安装步骤如下&#xff1a; Win10 版本号为 2004&#xff08;内部版本19041或更高&#xff09;即可&#xff0c;如果低于此版本可使用 Windows 10 易升工具手动升级。下载 Windows 10 易升工具&#xff1a; https:…

DAY52:动态规划(十七)子序列问题:最长递增子序列+最长连续递增序列+最长重复子数组

文章目录 300.最长递增子序列&#xff08;注意初始化和结果取值&#xff09;思路DP数组含义递推公式初始化最开始的写法debug测试&#xff1a;解答错误debug测试2&#xff1a;result初始值 修改完整版总结 674.最长连续递增序列思路1&#xff1a;滑动窗口思路2&#xff1a;动态…

【Leetcode】54.螺旋矩阵

一、题目 1、题目描述 给你一个 m m m 行 n n n 列的矩阵 matrix,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例1: 输入:matrix =

安防监控视频汇聚EasyCVR修改录像计划等待时间较长,是什么原因?

安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…

项目——负载均衡在线OJ

目录 项目介绍开发环境所用技术项目宏观结构编写思路1. 编写compile_server1.1 编译模块编写1.2 运行功能1.3compile_runner 编译与运行1.4 编写compile_server.cpp调用compile_run模块&#xff0c;形成网络服务 2. 编写基于MVC的oj_server2.1 oj_server.cpp的编写2.2 oj_model…

Unity进阶--对象池数据场景管理器笔记

文章目录 泛型单例类泛型单例类&#xff08;不带组件版&#xff09;对象池管理器数据管理器场景管理器 泛型单例类 using System.Collections; using System.Collections.Generic;public abstract class ManagersSingle<T> where T : new() {private static T instance;…

OSCP 学习:Kali Linux 基本命令

Bash 环境 环境变量 当我们开启新的bash时候&#xff0c;它会拥有自己的环境变量 我是这样理解 环境变量的&#xff1a; 每个程序都有自己运行的地址 我们用一个变量来储存它的地址 这个变量就叫环境变量 Kali 最常用的环境变量 就是 $PATH。这个我们可以用这个变量进行不正当…

selenium浏览器驱动下载

Chrome谷歌浏览器 下载地址&#xff1a;http://chromedriver.storage.googleapis.com/index.html 不同的Chrome的版本对应的chromedriver.exe 版本也不一样&#xff0c;下载时不要搞错了。 如果是最新的Chrome, 下载最新的chromedriver.exe 就可以了。 Firefox火狐浏览器 驱…

B073-封装工具类 服务模块(后台)

目录 拿当前登录人信息工具类服务模块业务分析表结构后端代码后台代码覆写删除-加详情一起删调整前端Data&#xff0c;handleAdd和编辑框覆写新增编辑按钮展示详情资源&#xff1a;多图上传和回显图片 拿当前登录人信息工具类 工具类准备&#xff1a;LoginContext: 登录上下文…

前端性能测试

目录 前言&#xff1a; 前端性能 1、优化 2、Lighthouse 使用 4、Lighthouse 报告参数的标准 5、更多产品 前言&#xff1a; 前端性能测试是一个广泛的领域&#xff0c;它旨在评估前端应用程序的性能和可靠性。前端性能测试需要使用各种测试工具和技术&#xff0c;包括浏…

功率信号源的基本工作原理、用途和应用方法

功率信号源是一种可以产生恒定或可变功率输出的测试设备。在电子实验中&#xff0c;功率信号源广泛应用于各种不同的应用&#xff0c;下面安泰电子就来介绍功率信号源的基本工作原理、用途和应用方法。 功率信号源的基本工作原理 功率信号源的基本工作原理是将电能转换成信号能…

【前端实习评审】对小说详情模块的产品原型有一定的自己理解

大家好&#xff0c;本篇文章分享一下【校招VIP】免费商业项目“推推”第一期书籍详情模块前端同学的文档作品。该同学来自中国科学院大学计算机技术专业。 本项目亮点难点&#xff1a;1 热门书籍在更新点的访问压力 2 书籍更新通知的及时性和有效性 3 书荒:同好推荐的可能性 4…

血压诊断米家智能血压计方案

智能血压计产品介绍: 智能血压计是一种基于蓝牙技术的便携式血压测量设备。它通过无线连接与智能手机或其他设备同步并联接到APP端&#xff08;米家&#xff09;&#xff0c;可以准确测量用户的血压数据&#xff0c;并通过手机应用程序进行记录和分析。 智能血压计产品结构: 智…

Win10的两个实用技巧系列之蓝屏代码大全及解决方案、更改应用优先级的技巧

Win10怎么设置程序优先级? Win10更改应用优先级的技巧 Win10怎么设置程序优先级&#xff1f;Win10系统中任务管理器想要设置优先级&#xff0c;该怎么设置呢&#xff1f;下面我们就来看看Win10更改应用优先级的技巧 有些Win10用户想要调整程序优先级&#xff0c;以确保某些…

Sentinel限流中间件

目录 介绍 Sentinel 的特征 Sentinel 的组成 实战使用 简单实例 配置本地控制台 使用可视化ui配置简单流控 配置异步任务限流 使用注解定义限流资源 SpringCloud整合Sentinel 简单整合 并发线程流控 关联模式 整合openFeign使用 介绍 随着微服务的流行&#xff0…