leetcode千題 845 陣列中的最長山脈

2021-10-25 06:13:49 字數 1429 閱讀 8799

我們把陣列 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,返回最長 山脈 的長度...