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

(二分查找)leetcode162. 寻找峰值

文章目录

  • 一、题目
    • 1、题目描述
    • 2、基础框架
    • 3、原题链接
  • 二、解题报告
    • 1、思路分析
    • 2、时间复杂度
    • 3、代码详解
  • 三、本题小知识

一、题目

1、题目描述

峰值元素是指其值严格大于左右相邻值的元素。

给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。

你可以假设 nums[-1] = nums[n] = -∞ 。

你必须实现时间复杂度为 O(log n) 的算法来解决此问题。

示例 1:
输入:nums = [1,2,3,1]
输出:2
解释:3 是峰值元素,你的函数应该返回其索引 2。

示例 2:
输入:nums = [1,2,1,3,5,6,4]
输出:1 或 5
解释:你的函数可以返回索引 1,其峰值元素为 2;
或者返回索引 5, 其峰值元素为 6。

2、基础框架

  • C++版本给出的基础框架如下:

3、原题链接

https://leetcode.cn/problems/find-peak-element/

二、解题报告

1、思路分析

  (1)(1)(1)易证,如果nums[i] > nums[i+1]那么[0…i]区间内肯定存在峰值。如果nums[i] < nums[i+1],那么[i…nums.length-1]区间内肯定存在峰值。
  (2)(2)(2)所以该问题具有二分性,如果是nums[mid]>nums[mid+1],那么丢弃[i+1…r],即r = mid.
  (3)(3)(3)如果nums[mid]<nums[mid+1],那么就丢弃[l…i],即l = mid +1
  (4)(4)(4)二分的出口条件是l >= r,即l一旦等于r就会结束循环,所以mid不会大于r,即mid+1不会有越界问题。

2、时间复杂度

时间复杂度为O(logn)

3、代码详解

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

三、本题小知识

http://www.lryc.cn/news/24159.html

相关文章:

  • spring boot 配合element ui vue实现表格的批量删除(前后端详细教学,简单易懂,有手就行)
  • hiveSQL开窗函数详解
  • 深度学习基础实例与总结
  • 在 WIndows 下安装 Apache Tinkerpop (Gremlin)
  • 从软件的角度看待PCI和PCIE(一)
  • DSP_TMS320F28377D_ADC学习笔记
  • springcloud3 Nacos中namespace和group,dataId的联系
  • [YOLO] yolo理解博客笔记
  • 清华源pip安装Python第三方包
  • python线程池【ThreadPoolExecutor()】批量获取博客园标题数据
  • LearnOpenGL-入门-8.坐标系统
  • windows10使用wsl2安装docker
  • Javascript的API基本内容(六)
  • 电压放大器和电流放大器的区别是什么意思
  • cast提前!最简单有效的神经网络优化方法,没有之一!
  • LeetCode刷题——动态规划(C/C++)
  • 车载智能终端TBOX
  • 技术分担产品之忧(上):挑选有业务专家潜力的人
  • UVa 12569 Planning mobile robot on Tree (EASY Version) 树上机器人规划(简单版) BFS 二进制
  • intel的集成显卡(intel(r) uhd graphics) 配置stable diffusion
  • 【数据库的基础知识(2)】
  • Docker部署实战
  • RestTemplate 相关使用
  • 新手小白亚马逊注册最全教程在此
  • 二分查找重复情况 找最左边或最右边的位置下标
  • 智慧扫码点餐系统源码
  • 分布式环境并发场景下,如何操作抢红包(或者减少库存)
  • 明星的孩子也在做的感统训练,真的有用吗?
  • 守护进程与TCP通讯
  • 在线文本翻译能力新增14个直译模型,打造以中文为轴心语言的翻译系统