문제
첫 번째이자 유일한 인수로 숫자 배열, 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