LeetCode845 数组中的最长山脉
1. 问题描述

2. 思路
中心扩张:先找到比左右两侧大的数 然后以这个数为中心 依次找到左右的长度
3. 代码
func longestMountain(arr []int) int {
var res int
if arr == nil || len(arr) <= 2 {
return res
}
for i := 1; i < len(arr) - 1; i++ {
if arr[i] > arr[i-1] && arr[i]>arr[i+1] {
left, right := i - 1, i + 1
for left > 0 && arr[left-1] < arr[left] {
left--
}
for right < len(arr) - 1 && arr[right+1] < arr[right] {
right++
}
res = max(res, right - left + 1)
}
}
return res
}
func max(a, b int) int {
if a < b {
a = b
}
return a
}
本文介绍了如何解决LeetCode第845题——数组中的最长山脉。通过中心扩张策略,找到数组中可能成为山脉顶点的元素,并以这些元素为中心,向两侧扩展寻找山脉的长度。代码实现中,遍历数组,对于每个元素判断其是否为山峰,然后计算以该元素为中心的山脉长度,并更新最长山脉的结果。这种方法有效地解决了问题,展示了动态规划在求解数组问题上的应用。
452

被折叠的 条评论
为什么被折叠?



