• LeetCode 852. 山脉数组的峰顶索引


    🌈🌈😄😄

    欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 852. 山脉数组的峰顶索引 ,做好准备了么,那么开始吧。

    🌲🌲🐴🐴

    一、题目名称

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

    二、题目要求

    符合下列属性的数组 arr 称为 山脉数组 :
    arr.length >= 3
    存在 i(0 < i < arr.length - 1)使得:
    arr[0] < arr[1] < ... arr[i-1] < arr[i]
    arr[i] > arr[i+1] > ... > arr[arr.length - 1]
    给你由整数组成的山脉数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i 。

    三、相应举例

    示例 1:

    输入:arr = [0,1,0]
    输出:1


    示例 2:

    输入:arr = [0,2,1,0]
    输出:1


    示例 3:

    输入:arr = [0,10,5,2]
    输出:1


    示例 4:

    输入:arr = [3,4,5,1]
    输出:2


    示例 5:

    输入:arr = [24,69,100,99,79,78,67,36,26,19]
    输出:2

    四、限制要求

    • 3 <= arr.length <= 104

    • 0 <= arr[i] <= 106

    • 题目数据保证 arr 是一个山脉数组

    五、解决办法

    二分查找

    变量

    n,即数组长度,但此时left为1,因为下方if语句中mid最小值取1,否则会出现索引为-1的情况。故最左索引为1。

    ans,存储每次二分后且满足arr[mid] > arr[mid - 1]的mid值,当满足left > right时,退出循环,返回ans。

    六、代码实现

    1. class Solution {
    2. public int peakIndexInMountainArray(int[] arr) {
    3. int n = arr.length;
    4. int left = 1, right = n -1, ans = 0;
    5. while (left <= right) {
    6. int mid = (right-left)/2 + left;
    7. if (arr[mid] > arr[mid - 1]) {
    8. ans = mid;
    9. left = mid + 1;
    10. } else {
    11. right = mid - 1;
    12. }
    13. }
    14. return ans;
    15. }
    16. }

     

  • 相关阅读:
    R语言绘制环状柱状堆积图+分组+显著性
    前端技术点滴整理-1
    静态双位置继电器XJLS-8G/220
    HTML5期末大作业 HTML+CSS+JavaScript美食坊美食购物主题(15页)
    Day10_Git版本控制、项目总结,preview_220627,
    8月18日计算机视觉理论学习笔记——图像预处理
    安全浏览器是否可以直接“回击”浏览器主页劫持?
    从c到c++
    DP总结-壹-最长公共型
    Haproxy负载均衡集群
  • 原文地址:https://blog.csdn.net/weixin_62275996/article/details/128171075