算法23.0

852. 山脉数组的峰顶索引 - 力扣(LeetCode)

自己的理解:

暴力解法的话 遍历一遍数组 然后存储下峰值元素以及下标就可以了 试试超时没有

哇咔咔 还真的没有超时??? 中等题用遍历数组做出来了?!

下面开始二分算法:

发现mid<left的时候 left=mid也不敢跳出去 万一是结果呢 mid大于ret的时候 right=mid right也不敢跳过啊 万一是结果呢 到底用哪个?

还是要确定好二段性再用二分算法 确定好二段里面每一段分别的性质具体是什么

感觉双指针、滑动窗口都可以啊 只要找到下降的那个趋势 就找到点了 试试滑动窗口

我去还真的过了 比暴力解好一点 时间复杂度超过22%

细节:

maxIndex=(arri > arrmaxIndex) ? i : maxIndex; 要的就是这句代码

在遍历数组的时候更新:for i循环+三目运算符(本质是一个if语句)

区间最左面和最右面都排除了 所以区间可以从left = 1 right = arr.length-2开始

别人的讲解:

最左面和最右面的元素是不用考虑的 暴力枚举时间复杂是O(n)

当我们这样划分数组之后 就会发现天然的分成了两段 左边的一段满足一个性质 右边的一个段满足一个性质 二段性

下面是题目、效果图和代码:

java 复制代码
class Solution 
{
    public int peakIndexInMountainArray(int[] arr) 
    {  
       int maxIndex = 0;
       for(int i =1;i<arr.length;i++)
       {
        maxIndex=(arr[i] > arr[maxIndex]) ? i : maxIndex;
       }
       return maxIndex;
    }
}

//maxIndex=(arr[i] > arr[maxIndex]) ? i : maxIndex;  要的就是这句代码
//在遍历数组的时候更新:for i循环+三目运算符(本质是一个if语句) 
java 复制代码
class Solution {
    public int peakIndexInMountainArray(int[] arr) {
        //双指针or滑动窗口
        int left =0 ,right = 1;

        while(right<arr.length){
            if(arr[right]<arr[left]) break;
            left++;
            right++;
        }
        return left;
    }
}
java 复制代码
class Solution 
{
    public int peakIndexInMountainArray(int[] arr) {
        int left =1 ,right = arr.length-2;
        while(left<right)
        {
            int mid=left+(right-left+1)/2;
            if(arr[mid]>arr[mid-1]) left = mid;
            else right = mid-1;
        }
        return left;
    }
}
//xiyu251102&1#3*5
相关推荐
♡すぎ♡8 分钟前
SWE 的基本条件
算法·swe·浅水模拟
郝学胜-神的一滴1 小时前
AI 编程智能体 17:四步搞定专属AI智能体
大数据·人工智能·python·神经网络·算法·langchain·强化学习
微尘hjx2 小时前
【StrongSort 03】多轨迹算法StrongSort改进点
人工智能·算法·yolo·视觉检测·ultralytics·strongsort·轨迹算法
梦帮科技2 小时前
QML-04-QGraph-Diff:量子非欧图扩散生成模型与 SE(3) 等变分子晶格逆向合成完整技术指南(上部分)
人工智能·算法·自动化·量子计算·傅里叶分析
七牛开发者2 小时前
TokenGate:端到端可训练的 Token 剪枝机制,让大模型 Prefill 提速 11.3 倍
算法·机器学习·剪枝·长上下文·tokengate
牧瀬クリスだ3 小时前
Redis Hash实战:高效存储对象与购物车
java·数据库·redis·算法·哈希算法
木井巳3 小时前
【动态规划: 路径问题】下降路径最小和
java·算法·leetcode·动态规划·推荐算法
deepseek234 小时前
OpenAI三项科学发现拆解:3-SAT亚指数算法挑战ETH,AI科学声明的验证流水线怎么搭
人工智能·算法·openai
梦帮科技4 小时前
基于幺正李代数连续归一化流的混合量子生成模型 (HQNN-Flow) 完整技术指南(上部分)
网络·人工智能·算法·量子计算