如果以下属性成立,我们将任何(连续的)子数组子(arr)称为山 -
子长度 >= 3
存在一些 0 < i < sub.length- 1 使得 sub[0] < sub[1] < ... sub[i-1] < sub[i] > B[i+1] > ... > sub[sub .长度 - 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