我們把陣列 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
從左向右,從右向左查一遍
直到左右上坡頂點,然後再列舉各個頂點找到最大值
class
solution
:def
longestmountain
(self, a: list[
int])-
>
int:
ans =
0 ll =
len(a)
if ll==0:
return
0 l =[0
]*(ll+1)
r =[0
]*(ll+1)
c =1for i in
range(1
,ll)
:if a[i]
>a[i-1]
: c+=
1elif a[i]
: l[i-1]
=c c =
1else
: c =
1for i in
range
(ll-2,
-1,-
1):if a[i]
>a[i+1]
: c+=
1elif a[i]
: r[i+1]
=c c =
1else
: c =
1for i in
range
(ll)
:if l[i]
>=
2and r[i]
>=2:
ans =
max(ans,l[i]
+r[i]-1
)return ans
845 陣列中的最長山脈LeetCode
陣列中的最長山脈 題目描述提示幫助提交記錄社群討論閱讀解答 隨機一題 我們把陣列 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 的任意...
leetcode845陣列中的最長山脈
class solution object deflongestmountain self,a type a list int rtype int 想法 乙個用來記錄左邊山底,乙個用來記錄山頂,乙個用來記錄右邊山底 left 0 top left right top maxlength 0while...
LeetCode 845 陣列中的最長山脈
我們把陣列 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,返回最長 山脈 的長度...