Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 가장 큰 빈도를 구성하는 가능한 가장 작은 길이

<시간/>

문제

첫 번째이자 유일한 인수로 숫자 배열, arr를 취하는 JavaScript 함수를 작성해야 합니다.

우리의 함수는 배열 arr의 (인접한) 하위 배열의 가능한 가장 작은 길이를 찾는 것으로 가정되며, 이 배열은 전체 배열과 모든 요소의 최대 빈도가 동일합니다.

예를 들어 함수에 대한 입력이

인 경우

입력

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

출력

const output = 2;

출력 설명

55번과 77번 요소가 모두 두 번 나타나기 때문에 입력 배열은 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