【算法】二分算法——山脉数组的峰顶索引

简介: 【算法】二分算法——山脉数组的峰顶索引

该题用二分算法解“山脉数组的峰顶索引”,有需要借鉴即可。

1.题目

题目链接:LINK

暴力求解很简单,这里不再提及。

这个可以根据峰顶值分为两部分,因而具有“二段性”,可以用二分算法,一是大于前一个数字的值,二是小于前一个数字的值。

如下图所示:

然后根据此图我们可以得出代码逻辑:

然后我们可以得出代码:

class Solution {
public:
    int peakIndexInMountainArray(vector<int>& arr) 
    {
        int left = 1, right = arr.size() - 1 - 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;
    }
};

2.总结

这个题没什么好说的,抓好“二段性”这个点就可以用二分,然后就结束了。


EOF

相关文章
|
6月前
|
存储 算法 关系型数据库
深入理解InnoDB索引数据结构和算法
1. **索引定义**:索引是提升查询速度的有序数据结构,帮助数据库系统快速找到数据。 2. **索引类型**:包括普通索引、唯一索引、主键索引、空间索引和全文索引,每种有特定应用场景。 3. **数据结构**:InnoDB使用B+树作为索引结构,确保所有节点按顺序排列,降低查询时的磁盘I/O。 4. **B+树特性**:所有数据都在叶子节点,非叶子节点仅存储索引,提供高效范围查询。 5. **索引优势**:通过减少查找数据所需的磁盘I/O次数,显著提高查询性能。 **总结:**InnoDB索引通过B+树结构,优化了数据访问,使得查询速度快,尤其适合大数据量的场景。
353 0
深入理解InnoDB索引数据结构和算法
|
算法 索引
|
存储 算法 数据库
经典算法学习之-----顺序查找,折半查找,索引查找(二)
经典算法学习之-----顺序查找,折半查找,索引查找(二)
223 0
|
6月前
|
存储 算法 物联网
R-Tree算法:空间索引的高效解决方案
【5月更文挑战第17天】R-Tree是用于多维空间索引的数据结构,常用于地理信息系统、数据库和计算机图形学。它通过分层矩形区域组织数据,支持快速查询。文章介绍了R-Tree的工作原理、应用场景,如地理信息存储和查询,以及Python的`rtree`库实现示例。此外,还讨论了R-Tree的优势(如空间效率和查询性能)与挑战(如实现复杂和内存消耗),以及优化和变种,如R* Tree和STR。R-Tree在机器学习、实时数据分析等领域有广泛应用,并与其他数据结构(如kd-trees和quad-trees)进行比较。未来趋势将聚焦于优化算法、动态适应性和分布式并行计算。
207 1
|
3月前
|
算法 Java 索引
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
36 0
|
5月前
|
算法 数据挖掘 开发者
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
|
算法 Java 索引
经典算法学习之-----顺序查找,折半查找,索引查找(三)
经典算法学习之-----顺序查找,折半查找,索引查找(三)
46 0
|
算法 索引
二分查找算法&最靠左索引&最靠右索引详解与优化:图文全解+代码详注+思路分析(二)
二分查找算法&最靠左索引&最靠右索引详解与优化:图文全解+代码详注+思路分析
118 0
|
算法 索引
二分查找算法&最靠左索引&最靠右索引详解与优化:图文全解+代码详注+思路分析(一)
二分查找算法&最靠左索引&最靠右索引详解与优化:图文全解+代码详注+思路分析
275 0
|
6月前
|
JavaScript 算法 前端开发
TypeScript算法专题 - blog2 - 单链表节点的索引、结点删除与链表反转
TypeScript算法专题 - blog2 - 单链表节点的索引、结点删除与链表反转
50 0