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

Các phần của mảng có n phần tử khác nhau 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 các ký tự, arr, làm đối số đầu tiên. Đối số thứ hai cho hàm của chúng ta sẽ là một số, num. Hàm của chúng ta sẽ đếm và trả về số lượng mảng con của mảng chứa chính xác số phần tử riêng biệt.

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

const arr = [12, 15, 12, 15, 18];
const num = 2;

Sau đó, đầu ra phải là -

const output = 7;

Giải thích đầu ra

Các mảng con được hình thành với chính xác 2 phần tử khác nhau -

[12,15], [15,12], [12,15], [15,18], [12,15,12], [15,12,15], [12,15,12,15]

Ví dụ

Mã cho điều này sẽ là -

const arr = [12, 15, 12, 15, 18];
const num = 2;
const distinctSubarrays = (arr = [], num = 1) => {
   const findDistinct = (count) => {
      const map = {};
      let ptr = 0;
      let distinct = 0;
      let res = 0;
      for(let right = 0; right < arr.length; right++){
         const num = arr[right];
         map[num] = (map[num] || 0) + 1;
         if(map[num] === 1){
            distinct += 1;
         };
         while(distinct > count){
            map[arr[ptr]] -= 1;
            if(map[arr[ptr]] === 0){
               distinct -= 1;
            };
            ptr += 1;
         };
         res += right - ptr + 1;
      };
      return res;
   };
   return findDistinct(num) - findDistinct(num - 1)
};
console.log(distinctSubarrays(arr, num));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

7