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

【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值

【LeetCode刷题】Day 13

  • 题目1:852.山脉数组的峰顶索引
    • 思路分析:
    • 思路1:暴力枚举O(N)
    • 思路2:二分查找O(logN)
  • 题目2:162.寻找峰值
    • 思路分析:
    • 思路1:二分查找O(logN)

在这里插入图片描述

题目1:852.山脉数组的峰顶索引

在这里插入图片描述

思路分析:

暴力枚举的话就是找单调性,越来越大,直到找到,一个数大于后一个数。这个数就是最大值。
就是单调性相关的问题

思路1:暴力枚举O(N)

思路2:二分查找O(logN)

二分查找:二段性:[单调递增(包括峰顶)][单调递减],左区间找右值,右边左不变,-1+1
代码实现:

class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {int left=0,right=arr.size()-1;while(left<right){int mid =left+(right-left+1)/2;if(arr[mid]>arr[mid-1]) left=mid;else right=mid-1;}return left;}
};

LeetCode链接:852.山脉数组的峰顶索引


题目2:162.寻找峰值

在这里插入图片描述

思路分析:

这题情况还是比较多,递增开始,还是递减开始,递增开始我们需要找后面比较大的值,递减开始,说明第一个值就可以。

思路1:二分查找O(logN)

不管哪种,我们只需要找区间中峰顶的值,反正逻辑是一样的,下降就找前面,增加就找后面,不管中间怎么变,是这个“山峰”跳到另一个“山峰”,反正找到其中一组就可以,随着区间不断缩小,也会集中在一个“山峰”上。

代码实现

class Solution {
public:int findPeakElement(vector<int>& nums) {int right=nums.size()-1,left=0;while(left<right){   int mid = left+(right-left+1)/2;if(nums[mid]>nums[mid-1]) left=mid;else right=mid-1;}return left;}
};

LeetCode链接:162.寻找峰值


相关文章:

【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值

【LeetCode刷题】Day 13 题目1&#xff1a;852.山脉数组的峰顶索引思路分析&#xff1a;思路1&#xff1a;暴力枚举O(N)思路2&#xff1a;二分查找O(logN) 题目2&#xff1a;162.寻找峰值思路分析&#xff1a;思路1&#xff1a;二分查找O(logN) 题目1&#xff1a;852.山脉数组的…...

《Python学习》-- 实操篇一

一、文件操作 1. 1 读取文本文件 # 文件操作模式 # r (默认) - 只读模式。文件必须存在&#xff0c;否则会抛出FileNotFoundError。在这种模式下&#xff0c;你只能读取文件内容&#xff0c;不能写入或追加。 # w - 写入模式。如果文件存在&#xff0c;内容会被清空&#xff…...

C# 集合(二) —— List/Queue类

总目录 C# 语法总目录 集合二 List/Queue 1. List2. Queue 1. List List有ArrayList和LinkedList ArrayList 类似数组&#xff0c;查找快&#xff0c;插入删除慢(相对)LinkedList 类似双向链表&#xff0c;查找慢(相对)&#xff0c;插入删除快 //ArrayList //ArrayList Arr…...

【TB作品】MSP430 G2553 单片机口袋板,读取单片机P1.4电压显示,ADC

功能 读取P1.4电压&#xff0c;显示到口袋板显示屏&#xff0c;电压越高亮灯越多。 部分程序 while (1){ADC10CTL0 | ENC ADC10SC; // Sampling and conversion startLPM0;adcvalue ADC10MEM; //原始数据 0到1023adtest (float) adcvalue / 1024.…...

知乎x-zse-96、x-zse-81

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章未…...

【Linux】Linux工具——yum,vim

1.Linux 软件包管理器——yum Linux安装软件&#xff1a; 源代码安装&#xff08;不建议&#xff09;rpm安装&#xff08;类似Linux安装包&#xff0c;版本可能不兼容&#xff0c;不推荐&#xff0c;容易报错&#xff09;yum安装&#xff08;解决了安装源&#xff0c;安装版本&…...

ES 生命周期管理

一 .概念 ILM定义了四个生命周期阶段&#xff1a;Hot&#xff1a;正在积极地更新和查询索引。Warm&#xff1a;不再更新索引&#xff0c;但仍在查询。cold&#xff1a;不再更新索引&#xff0c;很少查询。信息仍然需要可搜索&#xff0c;但是如果这些查询速度较慢也可以。Dele…...

【JavaScript脚本宇宙】揭秘HTTP请求库:深入理解它们的特性与应用

深度揭秘&#xff1a;六大HTTP请求库的比较与应用 前言 在这篇文章中&#xff0c;我们将探讨六种主要的HTTP请求库。这些库为处理网络请求提供了不同的工具和功能&#xff0c;包括Axios、Fetch API、Request、SuperAgent、Got和Node-fetch。通过本文&#xff0c;你将对每个库…...

【强化学习】DPO(Direct Preference Optimization)算法学习笔记

【强化学习】DPO&#xff08;Direct Preference Optimization&#xff09;算法学习笔记 RLHF与DPO的关系KL散度Bradley-Terry模型DPO算法流程参考文献 RLHF与DPO的关系 DPO&#xff08;Direct Preference Optimization&#xff09;和RLHF&#xff08;Reinforcement Learning f…...

vue3 todolist 简单例子

vue3 简单的TodList 地址&#xff1a; https://gitee.com/cheng_yong_xu/vue3-composition-api-todo-app-my 效果 step-1 初始化项项目 我们不采用vue cli 搭建项目 直接将上图文件夹&#xff0c;复制到vscode编辑器&#xff0c;清空App.vue的内容 安装包 # 安装包 npm…...

Linux项目编程必备武器!

本文目录 一、更换源服务器二、下载man开发手册(一般都自带&#xff0c;没有的话使用下面方法下载) 一、更换源服务器 我们使用apt-get等下载命令下载的软件都是从源服务器上获取的&#xff0c;有些软件包在某个服务器上存在&#xff0c;而另一个服务器不存在。所以我们可以添加…...

AndroidStudio编译很慢问题解决

如果gradle同步、编译下载很慢&#xff0c;可以换一下仓库阿里云镜像 repositories {maven { url https://maven.aliyun.com/repository/google } maven { url https://maven.aliyun.com/repository/jcenter } maven { url https://maven.aliyun.com/repository/public } goog…...

PHAR反序列化

PHAR PHAR&#xff08;PHP Archive&#xff09;文件是一种归档文件格式&#xff0c;phar文件本质上是一种压缩文件&#xff0c;会以序列化的形式存储用户自定义的meta-data。当受影响的文件操作函数调用phar文件时&#xff0c;会自动反序列化meta-data内的内容,这里就是我们反序…...

Rust安装

目录 一、安装1.1 在Windows上安装1.2 在Linux下安装 二、包管理工具三、Hello World3.1 安装IDE3.2 输出Hello World 一、安装 1.1 在Windows上安装 点击页面 安装 Rust - Rust 程序设计语言 (rust-lang.org)&#xff0c;选择"下载RUSTUP-INIT.EXE(64位&#xff09;&qu…...

513.找树左下角的值

给定一个二叉树&#xff0c;在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路&#xff1a; 深度最大的叶子结点一定是最后一行。 优先左边搜索&#xff0c;记录深度最大的叶子节点&#xff0c;此时就是树的最后一行最左边的值 代码&#xff1a; class Solution:def fi…...

docker基础,docker安装mysql,docker安装Nginx,docker安装mq,docker基础命令

核心功能操作镜像 Docker安装mysql docker run -d --name mysql -p 3306:3306 -e TZAsia/Shanghai -e MYSQL_ROOT_PASSWORDlcl15604007179 mysql docker的基本操作 docker rm 容器名称即可 docker ps 查看当前运行的容器 docker rm 干掉当前容器 docker logs 查看容器命令日…...

MyBatis二、搭建 MyBatis

MyBatis二、搭建 MyBatis 开发环境MySQL 不同版本的注意事项驱动程序&#xff08;Driver&#xff09;JDBC URL连接参数MyBatis配置文件版本兼容性常见问题与解决方案示例&#xff08;MySQL 8.x与MyBatis连接&#xff09; 创建 Maven 工程打包方式&#xff1a;Jar引入依赖创建数…...

昵称生成器

package mainimport ("math/rand" )// 随机昵称 形容词 var nicheng_tou []string{"迷你的", "鲜艳的", "飞快的", "真实的", "清新的", "幸福的", "可耐的", "快乐的", "冷…...

mysql仿照find_in_set写了一个replace_in_set函数,英文逗号拼接字符串指定替换

开发中使用mysql5.7版本数据库&#xff0c;对于英文逗号拼接的字符串&#xff0c;想要替换其中指定的字符串&#xff0c;找不到数据库函数支持&#xff0c;自己写了一个&#xff0c;实测好用&#xff01; /*类似find_in_set,按英文逗号拆分字段,找出指定的旧字符串,替换成新字…...

机械设计手册第一册:公差

形位公差的标注&#xff1a; 形位公差框格中&#xff0c;不仅要表达形位公差的特征项目、基准代号和其他符号&#xff0c;还要正确给出公差带的大小、形状等内容。 1.形位公差框格&#xff1a; 形位公差框格由两个框格或多个格框组成&#xff0c;框格中的主要内容从左到右按…...

从elm-react-native学习React Native最佳实践:10个关键开发技巧

从elm-react-native学习React Native最佳实践&#xff1a;10个关键开发技巧 【免费下载链接】elm-react-native A react native app simulating eleme app&#xff0c;run ios and android. 项目地址: https://gitcode.com/gh_mirrors/el/elm-react-native 想要快速掌握…...

OpenELB安全配置:RBAC、网络策略与证书管理最佳实践

OpenELB安全配置&#xff1a;RBAC、网络策略与证书管理最佳实践 【免费下载链接】openelb Load Balancer Implementation for Kubernetes in Bare-Metal, Edge, and Virtualization 项目地址: https://gitcode.com/gh_mirrors/op/openelb OpenELB是一款专为Kubernetes设…...

MapReduce数据倾斜解决方案

前言 在MapReduce生产环境中&#xff0c;数据倾斜是最常见也最致命的性能杀手。一个看似完美的分布式程序&#xff0c;可能因为某个ReduceTask处理的数据量远超其他任务&#xff0c;导致整个作业卡死数小时甚至失败。本文将从倾斜现象识别、根因分析、六大解决方案到实战案例&…...

如何通过纯JavaScript拖拽构建器实现零代码网站开发

如何通过纯JavaScript拖拽构建器实现零代码网站开发 【免费下载链接】VvvebJs Drag and drop page builder library written in vanilla javascript without dependencies or build tools. 项目地址: https://gitcode.com/gh_mirrors/vv/VvvebJs 在网站开发领域&#xf…...

Java 程序员第 24 阶段:多 Agent 高阶实战,复杂业务场景完整落地实现

在多 Agent 基础篇中&#xff0c;我们探讨了角色协同、任务拆分的基本模式。本文进一步深入&#xff0c;聚焦高阶架构设计、跨服务协作与复杂场景完整落地&#xff0c;帮助读者构建生产级别的多 Agent 系统。一、高阶架构&#xff1a;从简单协同到生产级系统1.1 三层架构模型成…...

为OpenClaw智能体工作流配置Taotoken作为稳定的模型供应后端

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为OpenClaw智能体工作流配置Taotoken作为稳定的模型供应后端 在构建基于OpenClaw的复杂自动化工作流时&#xff0c;一个稳定且模型…...

NVIDIA突破:单显卡实现图片驱动720p长视频世界模型生成能力提升

这项由NVIDIA研究团队主导的研究成果于2026年5月以预印本形式发布&#xff0c;论文编号为arXiv:2605.15178&#xff0c;感兴趣的读者可通过该编号查阅完整原文。给你一张照片&#xff0c;再给你一条摄像机的移动路线&#xff0c;然后电脑自动生成一段完整的一分钟高清视频&…...

AI大模型推理并行策略:DP、TP、PP、SP、EP的基本原理

在做大模型推理部署的时候,经常会碰到模型参数量太大,一块GPU的显存装不下,或者单块GPU的算力跟不上推理速度的情况,这时候就需要用并行策略来解决这些问题。 因为计算的流程不一样,推理和训练用到的并行策略在实现上也不一样。 这篇文章就是帮大家快速搞懂常见并行策略…...

影刀RPA跨境店群运营架构:TikTok Shop多节点高并发调度与Python环境隔离实战

大家好&#xff0c;我是林焱。 太有意思了&#xff0c;刚刷朋友圈&#xff0c;看到一个在跨境圈子里被疯狂转发的消息。 有几个当年和我一样&#xff0c;在南充念工程测量技术出身的 00 后学弟&#xff0c;最近跑回母校干了件特别硬核的事。 他们没有像传统的成功校友那样&a…...

数据类型与变量-Part1-基础篇

C语言数据类型与变量&#xff08;基础篇&#xff09; 系列导航 &#x1f4cd; Part 1: C语言数据类型与变量&#xff08;基础篇&#xff09;← 你在这里&#x1f51c; Part 2: C语言内存探秘&#xff08;进阶篇&#xff09;&#x1f51c; Part 3: C语言输入输出格式化艺术 大家…...