当前位置:首页 > 编程笔记 > 正文
已解决

算法 寻找峰值-(二分查找+反向双指针)

来自网友在路上 180880提问 提问时间:2023-09-23 14:10:14阅读次数: 80

最佳答案 问答题库808位专家为你答疑解惑

牛客网: BM19

题目: 寻找数组峰值,可能多个返回任一个,每个值满足nums[i] != nums[i + 1]

思路: 双指针 left = 0, right = n-1, 相向而行,取中间位置mid, nums[mid]与nums[mid+1]比较,如果nums[mid] < nums[mid+1],说明峰值在mid或mid右边,令left = mid + 1,此时right=mid时,可直接终止;否则峰值在mid或mid左边,令right = mid, 此时left为mid时直接终止;循环条件为当不满足 left < right时停止,right坐标为峰值。

代码:

// gopackage main
// import "fmt"/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param nums int整型一维数组 * @return int整型
*/
func findPeakElement( nums []int ) int {// write code hereif len(nums) == 0 {return -1}left, right := 0, len(nums) - 1for left < right {mid := left + (right-left)>>1if nums[mid] < nums[mid+1] {left = mid + 1} else {right = mid}}return right
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"算法 寻找峰值-(二分查找+反向双指针)":http://eshow365.cn/6-12131-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!