Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptのn個の異なる要素を持つ配列の部分


問題

最初の引数としてリテラルの配列arrを受け取るJavaScript関数を作成する必要があります。関数の2番目の引数は、数値numになります。この関数は、正確にnum個の個別の要素を含む配列のサブ配列の数をカウントして返す必要があります。

たとえば、関数への入力が-

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

その場合、出力は-

になります。
const output = 7;

出力の説明

正確に2つの異なる要素で形成されたサブアレイ-

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

このためのコードは-

になります
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));
を返します。

出力

そして、コンソールの出力は-

になります
7

  1. JavaScriptを使用して同じ配列内の配列の要素を複製するにはどうすればよいですか?

    以下は、同じ配列内の配列の要素を複製するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" > <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>   &nbs

  2. JavaScript配列を条件付きで結合しますか?

    以下は、JavaScriptの条件を持つJavaScript配列のコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>