【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.寻找峰值


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

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

相关文章

(二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2

层序遍历 10 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 综合代码&#xff1a; class Solution{public List<List<Integer>> resList new ArrayList<List<Integer>>();public List<List<…

QT窗口类型以及非模态窗口如何显示在顶层

一、 模态对话框 在弹出模态对话框时&#xff0c;除了该对话框整个应用程序窗口都无法接受用户响应&#xff0c;处于等待状态&#xff0c;直到模态对话框被关闭 使用exec 打开 非模态对话框 又叫做无模式对话框&#xff0c;即弹出非模态对话框时&#xff0c;用户仍然可以…

探索Web前端三大主流框架:React,Angular和Vue.js

在当今的Web开发领域&#xff0c;前端框架已成为构建响应式和交互式网页的基础。这些框架不仅提高了开发效率&#xff0c;还促进了代码的模块化和重用。其中&#xff0c;React&#xff0c;Angular和Vue.js是最受欢迎的三大主流前端框架&#xff0c;它们分别由Facebook&#xff…

2024华为OD机试真题-剩余银饰的重量-C++(C卷D卷)

题目描述 有 N 块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。 每一回合,从中选出三块 最重的 银饰,然后一起熔掉。假设银饰的重量分别为 x 、y 和 z, 且 x <= y <= z。那么熔掉的可能结果如下: 如果x == y == z,那么三…

24年海南三支一扶报名流程步骤详解

一、考试时间安排&#xff1a; 报名时间&#xff1a;6月1日8:00至6月7日18:00 准考证打印时间&#xff1a;6月17日8:00 考试时间&#xff1a;6月22日 二、招聘人数 海南省计划招募390名高校毕业生 三、笔试内容&#xff1a; 笔试内容&#xff1a;综合能力和素质&#xff08;满分…

排队论 | 基于排队机制实现智能仓储机器人巡逻及避碰

研究背景: 智能仓储机器人在现代物流行业中扮演着重要的角色,能够提高仓库的运作效率和准确性。然而,仓储机器人在巡逻过程中可能会遇到其他机器人或障碍物,这就需要解决排队和避碰问题,以确保安全和高效的运作。 研究路线: 背景调研:了解智能仓储机器人的发展和应用…

【设计模式】JAVA Design Patterns——Iterator(迭代器模式)

&#x1f50d;目的 提供一种在不暴露其基础表示的情况下顺序访问聚合对象的元素的方法。 &#x1f50d;解释 真实世界例子 百宝箱包含一组魔法物品。有多种物品&#xff0c;例如戒指&#xff0c;药水和武器。可以使用藏宝箱提供的迭代器按类型浏览商品。 通俗描述 容器可以提供…

使用 .NET Core 实现微服务(带例子)

使用 .NET Core 实现微服务 使用 .NET Core 实现微服务架构涉及几个关键步骤&#xff0c;包括服务划分、API 网关、服务通信和容器化部署。下面是一个简化的示例&#xff0c;展示如何使用 .NET Core 实现一个基本的微服务架构。 步骤 1&#xff1a;创建独立的微服务 定义微服…

【AIGC-数字人】V-Express:渐进式训练的数字人视频生成技术

介绍 在人像视频生成领域&#xff0c;使用单张图像生成人像视频已经变得越来越普遍。一种常见的方法涉及利用生成模型来增强适配器以实现受控生成。然而&#xff0c;控制信号的强度可能会有所不同&#xff0c;包括文本、音频、图像参考、姿态、深度图等。其中&#xff0c;较弱的…

Vue.js - 生命周期与工程化开发【0基础向 Vue 基础学习】

文章目录 Vue 的生命周期Vue 生命周期的四个阶段Vue 生命周期函数&#xff08;钩子函数 工程化开发 & 脚手架 Vue CLI**开发 Vue 的两种方式&#xff1a;**脚手架目录文件介绍项目运行流程组件化开发 & 根组件App.vue 文件&#xff08;单文件组件&#xff09;的三个组成…

【PyCharm】无法创建虚拟环境,提示:has no attribute CPython3macOsBrew

报错信息&#xff1a; AttributeError: module virtualenv.create.via_global_ref.builtin.cpython.mac_os has no attribute CPython3macOsBrew报错原因&#xff1a; 可能含有多个virtualenv&#xff0c;发生冲突了。 解决方法&#xff1a; 终端执行以下命令&#xff1a; p…

LeetCode 图-岛屿问题

图 图的基本知识基本概念图的类型相关术语 图的存储 LeetCode 相关题目岛屿问题岛屿的最大面积岛屿的周长 图的基本知识 基本概念 图的类型 无向图有向图加权图 相关术语 顶点边路径路径长度环负权环连通性顶点的度入度出度 图的存储 邻接矩阵存储&#xff1a;是用一个二…

豆包大模型API接入

1.安装JDK pip install volcengine 2.API接入 from volcengine.maas.v2 import MaasService maas MaasService(maas-api.ml-platform-cn-beijing.volces.com, cn-beijing) maas.set_ak(###access_key###&#xff09; maas.set_sk(###secret_key###) req { "strea…

MongoDB~基本知识记录

为何要学Mongodb 工作以来&#xff0c;使用最多、了解最多的是MySQL。但技术的发展一定是依据痛点来的&#xff0c;就比如我遇到的痛点&#xff0c;一个业务、一个平台能力、存储的一个对象&#xff0c;随着产品和运营的需求&#xff0c;不断的进行变更&#xff0c;每一次的变…

真机调试 Error:系统错误,xxx exceed max limit 2MB

我们在使用微信开发者工具开发小程序、小游戏等应用时&#xff0c;往往会点击“真机调试”&#xff0c;微信扫描查看真实情况。 但是会出现下面的报错提示&#xff0c;是因为主包体积超过了2MB。 小程序有体积和资源加载限制&#xff0c;在微信小程序中&#xff0c;每个包不能…

obj 编程语言:深入剖析其独特之处与未来展望

obj 编程语言&#xff1a;深入剖析其独特之处与未来展望 obj编程语言&#xff0c;作为计算机编程领域的一颗璀璨明珠&#xff0c;以其独特的设计理念和强大的功能吸引着众多开发者的目光。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;对obj编程语言进行深度剖…

vue3简单快速实现主题切换功能

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《vue3实战》 目录 内容概要 实现步骤 1.定义不同主题的css样式变量 2.入口main.ts中引入这个样式文件 3.主题样式css变量引用 4.设置默认主题样式 5.实现点击按钮主题切换 总结 最近发现了一个巨牛的人工智…

【Linux-buildroot,】

Linux-buildroot, ■ buildroot■ 1、简介■ 2、下载■ 2、编译■ 问题一&#xff1a;buildroot 编译的时候会先从网上下载所需的软件源码&#xff0c;下载cmake-3.8.2.tar.gz或下载很慢的情况 ■ buildroot-构建根文件系统■ 1、配置 buildroot■ 2、■ 3、 ■ buildroot-构建…

TK防关联引流系统:全球TikTok多账号运营的神器

在TikTok的生态中&#xff0c;高效运营多个账号已成为品牌全球推广的必经之路。为此&#xff0c;TK防关联引流系统应运而生&#xff0c;它是一款专为TikTok设计的效率神器&#xff0c;助您迅速搭建并管理全球多账号矩阵。该系统由先进的“防关联智能终端”硬件和智能的“TK防关…

AI生成微信职业头像

加油&#xff0c;新时代打工人&#xff01; 真别说&#xff0c;还挺好看的 https://chatglm.cn/main/alltoolsdetail