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

Tổng số dãy con tăng dần dài nhất trong JavaScript

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 tìm số lượng các dãy con tăng dần dài nhất (liên tiếp hoặc không liên tiếp).

Ví dụ, nếu đầu vào của hàm là:

Đầu vào

const arr = [2, 4, 6, 5, 8];

Đầu ra

const output = 2;

Giải thích đầu ra

Hai dãy con tăng dần dài nhất là [2, 4, 5, 8] và [2, 4, 6, 8].

Ví dụ

Dưới đây là mã:

const arr = [2, 4, 6, 5, 8]; const countSequence = (arr) => { const distance = new Array(arr.length).fill(1).map(() => 1); const count = new Array(arr.length).fill(1).map(() => 1); let max = 1; for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (arr[j] > arr[i]) { if (distance[j] <= distance[i]) { distance[j] = distance[i] + 1; count[j] = count[i]; max = Math.max(distance[j], max); } else if (distance[j] === distance[i] + 1) { count[j] += count[i]; } } } } return distance.reduce((acc, d, index) => { if (d === max) { acc += count[index]; } return acc; }, 0); }; console.log(countSequence(arr));

Đầu ra

2