Dãy con núi (Mountain Subsequence)
Chúng ta gọi bất kỳ mảng con liên tiếp sub (của arr) là một "núi" nếu các tính chất sau đúng:
sub.length >= 3- Tồn tại
0 < i < sub.length - 1sao chosub[0] < sub[1] < ... < sub[i-1] < sub[i] > sub[i+1] > ... > sub[sub.length - 1]
Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một mảng số arr làm đối số duy nhất. Hàm phải trả về độ dài của dãy con "núi" lớn nhất có trong mảng arr, nếu tồn tại, 0 nếu không.
Ví dụ, nếu đầu vào là:
Đầu vào
const arr = [3, 2, 5, 8, 4, 3, 6];
Đầu ra
const output = 5;
Giải thích
Vì mảng con mong muốn là: [2, 5, 8, 4, 3].
Ví dụ
Dưới đây là mã thực hiện:
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));
Kết quả
5