【剑斩OFFER】算法的暴力美学——寻找峰值

一、题目描述

二、算法原理

这道题和山脉数组的蜂顶索引的解法几乎一样,只不过除了left 和 right 的取值不同罢了,因为在这道题目中有些特殊的例子如【 2,1】 返回0,一般来说有峰顶的数组的数字至少要三,所以这里我们可以把这到题目看成是求这个数组里面的最大值,有因为假设有两个峰顶,当我们的中间落在峰顶的旁边时,我们只要求这个峰顶就行,因为题目说只要求其中一个就行不是吗?

所以我们看这篇博客的算法原理就行:

https://blog.csdn.net/2403_84958571/article/details/154749271?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

三、代码实现

cpp 复制代码
class Solution {
public:
    int findPeakElement(vector<int>& nums) {
        int left = 0,right = nums.size() - 1;
        while(left < right)
        {
            int mid = left + (right - left + 1)/2;
            if(nums[mid] > nums[mid - 1]) left = mid;
            else right = mid - 1;
        }
        return left;
    }
};
相关推荐
Albert Edison13 小时前
【项目设计】C++ 高并发内存池
数据结构·c++·单例模式·哈希算法·高并发
资深web全栈开发13 小时前
LeetCode 3625. 统计梯形的数目 II
算法·leetcode·组合数学
橘颂TA13 小时前
【剑斩OFFER】算法的暴力美学——外观数列
算法·leetcode·职场和发展·结构与算法
Liangwei Lin13 小时前
洛谷 P1434 [SHOI2002] 滑雪
算法
c#上位机14 小时前
halcon图像增强之自动灰度拉伸
图像处理·算法·c#·halcon·图像增强
rit843249914 小时前
压缩感知信号恢复算法:OMP与CoSaMP对比分析
数据库·人工智能·算法
Pluchon15 小时前
硅基计划4.0 算法 FloodFill算法
java·算法·leetcode·决策树·逻辑回归·深度优先·图搜索算法
菜鸟233号15 小时前
力扣347. 前k个高频元素 java实现
算法
小许学java15 小时前
数据结构-模拟实现顺序表和链表
java·数据结构·链表·arraylist·linkedlist·顺序表模拟实现·链表的模拟实现
Xの哲學16 小时前
Linux设备管理:从内核驱动到用户空间的完整架构解析
linux·服务器·算法·架构·边缘计算