使用 JavaScript 計算陣列中山脈的最大長度
山脈子序列
如果以下屬性成立,我們將任何(連續的)子陣列 sub(arr)稱為山脈 -
sub.length >= 3
存在一些 0 < i < sub.length - 1 使得 sub[0] < sub[1] < ... sub[i-1] < sub[i] > B[i+1] > ... > sub[sub.length - 1]
問題
我們需要編寫一個 JavaScript 函式,該函式將陣列 arr 作為第一個且唯一的引數。
我們的函式應該返回陣列 arr 中存在的最大山脈子序列的長度(如果存在),否則返回 0。
例如,如果函式輸入為
輸入
const arr = [3, 2, 5, 8, 4, 3, 6];
輸出
const output = 5;
輸出說明
因為所需的子陣列是 −
[2, 5, 8, 4, 3]
示例
以下是程式碼 −
const arr = [3, 2, 5, 8, 4, 3, 6];
const mountainLength = (arr = []) => {
let max = 0
for(let left = 0; left < arr.length; left++) {
let right = left
while(arr[right] < arr[right + 1]) {
right++
}
const top = right
while(right > left && arr[right] > arr[right + 1]) {
right++
}
if(right > top && top > left) {
max = Math.max(max, right - left + 1)
left = right
left--
}
}
return max
}
console.log(mountainLength(arr));輸出
5
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP