845 陣列中的最長山脈

2021-10-10 02:48:59 字數 1148 閱讀 6608

給出乙個整數陣列 a,返回最長 「山脈」 的長度。

如果不含有 「山脈」 則返回 0。

很容易想到暴力解法的思路,遍歷陣列,然後開始中心擴充套件,左邊需要嚴格遞減,右邊需要嚴格遞增,注意到兩邊都需要擴充套件。

class

solution

int ans =0;

for(

int i =

1; i < n -

1; i++

)//右邊擴充套件

int right = i +1;

while

(right < n && a[right -1]

> a[right]

)//左右邊任一不擴充套件都不行

if(left == i -

1|| right == i +1)

ans =

max(ans, right - left -1)

;}return ans;}}

;

容易想到暴力解法需要每次都列舉左右邊界,定義left_max[i]表示從位置i開始可以向左邊擴充套件的值,狀態轉移方程為left_max[i] = num[i] > num[i - 1]? left_max[i - 1] + 1 : 0,同理right_max[i]表示從位置i開始可以向右邊擴充套件的值,狀態轉移方程為right_max[i] = num[i] > num[i + 1]? right_max[i + 1] + 1 : 0,邊界條件left_max[0] = right_max[n - 1] = 0。

class

solution

vector<

int>

left

(n,0);

for(

int i =

1; i < n; i++

) vector<

int>

right

(n,0);

for(

int i = n -

2; i >=

0; i--

)int ans =0;

for(

int i =

1; i < n -

1; i++)}

return ans;}}

;

845 陣列中的最長山脈

我們把陣列 a 中符合下列屬性的任意連續子陣列 b 稱為 山脈 注意 b 可以是 a 的任意子陣列,包括整個陣列 a。給出乙個整數陣列a,返回最長 山脈 的長度。如果不含有 山脈 則返回0。示例 1 輸入 2,1,4,7,3,2,5 輸出 5 解釋 最長的 山脈 是 1,4,7,3,2 長度為 5。...

845 陣列中的最長山脈

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。給出乙個整數陣列 ...

陣列中的最長山脈 845

我們把陣列 a 中符合下列屬性的任意連續子陣列 b 稱為 山脈 給出乙個整數陣列 a,返回最長 山脈 的長度。如果不含有 山脈 則返回 0。示例 1 輸入 2,1,4,7,3,2,5 輸出 5 解釋 最長的 山脈 是 1,4,7,3,2 長度為 5。示例 2 輸入 2,2,2 輸出 0 解釋 不含 ...