Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Độ dài núi lớn nhất trong mảng dùng JavaScript

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 - 1 sao cho sub[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