首页 > 其他分享 >162. 寻找峰值

162. 寻找峰值

时间:2024-03-09 22:57:04浏览次数:30  
标签:nums int 寻找 峰值 middle ans leetcode 162

162. 寻找峰值

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

思路

https://leetcode.cn/problems/find-peak-element/solutions/998152/xun-zhao-feng-zhi-by-leetcode-solution-96sj/  

Code

二分查找法。需要对 两个端点做特殊处理。

class Solution {
public:
    int findPeakElement(vector<int>& nums) {
        int n = nums.size();
        
        if (n == 1){
            return 0;
        }

        int left = 0;
        int right = n-1;

        int ans = -1;
        while(left<=right){
            int middle = (left+right) / 2;

            if (middle == 0){
                if (nums[middle] < nums[middle+1]){
                    ans = middle+1;
                } else {
                    ans = middle;
                }
                
                break;
            } else if (middle == n-1){
                if (nums[middle] > nums[middle-1]){
                    ans = middle;
                } else {
                    ans = middle-1;
                }
                
                break;                
            }

            if (nums[middle] > nums[middle+1] && nums[middle] > nums[middle-1]){
                ans = middle;
                break;
            }

            if (nums[middle] < nums[middle+1]){
                left = middle+1;
            }else{
                right = middle-1;
            }
        }

        return ans;
    }
};

 

 

标签:nums,int,寻找,峰值,middle,ans,leetcode,162
From: https://www.cnblogs.com/lightsong/p/18063545

相关文章

  • 162. 寻找峰值(中)
    目录题目题解:二分题目峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设nums[-1]=nums[n]=-∞。你必须实现时间复杂度为O(logn)的算法来解......
  • 洛谷题单指南-搜索-P1162 填涂颜色
    原题链接:https://www.luogu.com.cn/problem/P1162题意解读:要把闭合圈内的0填为2,DFS处理即可。解题思路:由于方阵内只有一个闭合圈,所以闭合圈以外的0一定和边缘相连通,只需要从边缘开始,把0的连通块全部标记为2最后再输出时,2输出0,1输出1,0输出2,即可得解。100分代码:#include<bits......
  • LY1162 [ 20230323 CQYC省选模拟赛 T3 ] 跳!跳!跳!
    题意给定\(n\)个长度为\(m\)的字符串,进行若干操作,求每个字符串\(S_a\)到\(S_b\)的方案数。另外,你还有一个模式串\(T\),由\({1,...,n}\)与\(0\)(通配符)组成。从\(S_x\)右边的串开始,不断向右移动,直到\(S_y\)与\(T\)匹配。从\(S_x\)左边的串开始,不断向左......
  • 第十一届蓝桥杯试题B:寻找2020
    目录题目题解:暴力题目题解:暴力需要知道文件的操作;发现2020的行列标变化li=[]#创建一个空列表用于存储读取的文本内容withopen(r'2020.txt','r')asfp:#打开名为'2020.txt'的文件,并使用文件句柄fpforlineinfp.readlines():#逐行读取文件内容......
  • 如何高效寻找素数
    目录题目暴力优化埃拉托斯特尼素数筛选法题目输入n,返回[2,n)中素数的个数暴力从2开始到n,一个一个判断是不是素数,是的话就计数器加1。判断素数函数:从2开始到n,判断有没有是n的倍数,有倍数就不是素数defcountPrimes(n:int):count=0foriinrange(2,n):......
  • Educational Codeforces Round 162 E 点分治 虚树 树形dp
    传送门给出\(n\le2\cdot10^5\)的一棵树,每个节点有一个颜色。求出路径长度为\(2\)路径首端和尾端拥有相同颜色,且路径上其他点不存在相同颜色的点的路径条数。当时看错题了,把颜色抽出来后没法做了。后来感觉能点分治,然后把题看对了,遂写了一个极其抽象的点分治。除此之外,把某......
  • 在github开源市场如何高效寻找优秀开源项目
    作为程序员,不论是开发还是学习,肯定会用到开源项目,那么怎么快速在开源网站找到这些项目呢?常用的开源网站有:github和giteegithub是全球最大的开源社区,今天就以github为例,演示一下github界面一般来说,优秀的项目,维护会比较频繁,提交数也就会多一点。当然,一个好的项目,它......
  • 高速脉冲峰值检测系统
    产品简介:♦该系统是基于串口传输的采集系统,双通道8bitAD同步采集,每通道5GSPS,或者8通道,每通道1.25GSPS同步集采。♦板载1GBDDRIII内存,通过RS232与计算机串口进行通信。更多信息请加weixin-pt890111获取该系统是基于串口传输的采集系统,双通道8bitAD同步采集,每通道5GSPS,或者8通......
  • 10个技巧,3分钟教会你github高效寻找开源项目
    大家好,我是知微!作为程序员,不论是开发还是学习,肯定会用到开源项目,那么怎么快速在开源网站找到这些项目呢?常用的开源网站有:github和giteegithub是全球最大的开源社区,今天就以github为例,演示一下github界面一般来说,优秀的项目,维护会比较频繁,提交数也就会多一点。当......
  • 买卖股票的最佳时机——差值的最值的遍历寻找
    题目描述:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。(1)只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算所能获取的最大利润。返回可以从这笔交易中获取的最大利润。如果不能获取任何利润......