GitHub 地址:coffeeTu-code
LeekCode 地址:题库
Language:Golang
/*
@题目
我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”:
B.length >= 3
存在 0 < i < B.length - 1 使得 B[0] < B[1] < ... B[i-1] < B[i] > B[i+1] > ... > B[B.length - 1]
(注意:B 可以是 A 的任意子数组,包括整个数组 A。)
给出一个整数数组 A,返回最长 “山脉” 的长度。
如果不含有 “山脉” 则返回 0。
@示例 1:
输入:[2,1,4,7,3,2,5]
输出:5
解释:最长的 “山脉” 是 [1,4,7,3,2],长度为 5。
@示例 2:
输入:[2,2,2]
输出:0
解释:不含 “山脉”。
提示:
0 <= A.length <= 10000
0 <= A[i] <= 10000
@题目大意
给出一个数组,要求求出这个数组里面“山”最长的长度。“山”的意思是,从一个数开始逐渐上升,到顶以后,逐渐下降。
@解题思路
只寻找存在上坡、下坡的路段,并更新最大长度。
*/
func longestMountain(A []int) int {
step, max := 0, 0
for left := 0; left < len(A)-1; {
for ; left < len(A)-1 && A[left] >= A[left+1]; left++ {
}
step = 1
for ; left < len(A)-1 && A[left] < A[left+1]; left++ {
step++
}
if left < len(A)-1 && A[left] == A[left+1] {
continue
}
for ; left < len(A)-1 && A[left] > A[left+1]; left++ {
step++
if step > max {
max = step
}
}
}
return max
}
有疑问加站长微信联系(非本文作者)