Computer >> Máy Tính >  >> Lập trình >> Javascript

Tổng số chuỗi tăng dài nhất trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số, arr, làm đối số đầu tiên và duy nhất.

Hàm của chúng ta được yêu cầu để tìm số lượng các chuỗi con dài nhất tăng dần (liền kề hoặc không liền kề).

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 chuỗi con tăng dài nhất là [2, 4, 5, 8] và [2, 4, 6, 8].

Ví dụ

Sau đâ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