首页 > 寻找峰值
头像 牛客题解官
发表于 2022-04-22 11:40:36
题目主要信息: 给定一个长度为n的数组,返回其中任何一个峰值的索引 峰值元素是指其值严格大于左右相邻值的元素 数组两个边界可以看成是最小,nums[−1]=nums[n]=−∞nums[-1] = nums[n] = -\inftynums[−1]=nums[n]=−∞ 峰值不存在平的情况,即相邻 展开全文
头像 罅隙·
发表于 2022-02-04 13:05:22
思路 为什么想到二分查找? 因为二分查找的本质是二段性,二分查找的过程本质是对可行区间的压缩。只要满足二段性的问题都可以用二分查找解决。在这里二段性的体现是峰值的左边单调增,右边单调减。你可能会反驳给我们的数值不只有一个峰值,但是只要我们控制好条件,一定可以把范围压缩到只有一个峰值的情况,来看看 展开全文
头像 好好刷题进大厂
发表于 2021-11-24 12:23:44
1、二分法: 时间复杂度o(logn),空间复杂度o(1) 思想:上坡一定有波峰,下坡不一定有波峰 import java.util.*; public class Solution {     /* 展开全文
头像 Flipped-tech
发表于 2022-02-28 14:30:23
根据提议 感觉找最大值即可. public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @retu 展开全文
头像 难道天要亡我?
发表于 2021-10-24 00:01:33
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * 展开全文
头像 梦会绽放
发表于 2022-02-10 20:03:48
从此题中得到的小感悟 :充分把握题意方能选用更合适的解题方法(类二分法) 此题难度中等,很容易想到思路1,但是仅此的话,不符合“中等”的标签;另外,题中要求时间复杂度为 O(log n),这让我们很自然地联想到二分法,我们所熟悉的二分法是基于有序表,这道题目数组并不一定有序,那又如何和二分法产生关 展开全文
头像 不经历怎么能成长
发表于 2022-02-23 17:42:26
分析: 最简单的是循环遍历O(n) 二分查找,O(log2n) 最左边和最右边为无穷小,当任意一个位置i上的值小于相邻i+1时,则左边必然存在峰值。 当任意一个位置i上的值大于相邻i+1时,右边必存在峰值。 class Solution { public: // 左右边为无穷小,所以 当前位 展开全文
头像 已注销
发表于 2021-10-21 18:56:22
就是一层遍历,然后找到一个元素大于前面和后面的数字,然后返回下标;这里主要是注意,它的峰值可能出现在开头和结尾,需要单独提出来。 class Solution: def findPeakElement(self , nums: List[int]) -> int: # 展开全文
头像 机智の小盆友
发表于 2022-04-12 10:06:30
首先题意比较坑,比较模糊,未说明数组长度为1,为2,还有单边递增递减这种情况怎么处理,只能通过自己提交提示错误处理 思路: 先排除 数组长度为1,为2 这种情况 长度大于等于3后,从索引1处开始遍历,取索引-1 ,索引+1 与当前比较,都比当前小,返回 否则,就是单调递增或者递减,判断首节点与尾节 展开全文
头像 陈橙朱
发表于 2022-04-05 17:34:00
// 时间复杂度o(logn),空间复杂度o(1) // 思想:上坡一定有波峰,下坡不一定有波峰,但是可能找不到,一直向下走的。 // 因为,nums[-1] = nums[n] = -∞ // 最左边和最右边为无穷小,当任意一个位置i上的值小于相邻i+1时,则左边必然存在峰值 function f 展开全文
头像 珞珈山上武大郎
发表于 2022-11-05 20:23:26
/**二分加上一般方法  * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可  *  *   * @param nums int整型一维 展开全文

等你来战

查看全部