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

JavaScriptで最大の頻度を構成する可能な限り最小の長さ


問題

最初で唯一の引数として、数値の配列arrを受け取るJavaScript関数を作成する必要があります。

私たちの関数は、配列arrの(連続した)サブ配列の可能な限り最小の長さを見つけることになっています。これは、配列全体と同じ要素の最大頻度を持ちます。

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

入力

const arr = [55, 77, 77, 88, 55];

出力

const output = 2;

出力の説明

要素55と77の両方が2回出現するため、入力配列は2の要素の中で最も頻度が高くなります。

配列全体の中で最も頻度が高いサブ配列のうち、最短の長さは2です。したがって、2を返します。

以下はコードです-

const arr = [55, 77, 77, 88, 55];
const shortestLength = (arr) => {
   let freq = 0
   let len = Infinity
   arr.reduce((acc, num, index) => {
      if (acc[num] !== undefined) {
         acc[num].freq += 1
         acc[num].range[1] = index
      } else {
         acc[num] = {
            freq: 0,
            range: [index, index],
         }
      }
      if (acc[num].freq > freq) {
         freq = acc[num].freq
         len = acc[num].range[1] - acc[num].range[0] + 1
      } else if (acc[num].freq === freq) {
         len = Math.min(
            len,
            acc[num].range[1] - acc[num].range[0] + 1,
         )
      }
      return acc
   }, {})
   return len
};
console.log(shortestLength(arr));

出力

2

  1. JavaScript-配列オブジェクトの長さ

    JavaScriptのlengthプロパティは、オブジェクトのサイズを返します。以下は、文字列および配列オブジェクトの長さのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document

  2. すでに宣言されている変数に構造を解除することは可能ですか? 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> &