const ar = [1, 2, 2, 3, 1];
const counts = {};
let degree = 0;
for (let i = 0; i < ar.length; i += 1) {
const key = String(ar[i]);
if (counts[key]) {
counts[key].to = i;
counts[key].count += 1;
} else {
counts[key]= {};
counts[key].from = i;
counts[key].to = i;
counts[key].count = 1;
}
degree = Math.max(degree, counts[key].count);
}
let result = Number.MAX_VALUE;
Object.keys(counts).forEach((k) => {
if (counts[k].count === degree) {
result = Math.min(result, counts[k].to - counts[k].from + 1);
}
});
console.log(counts);
console.log("Degree:", degree);
console.log("Answer:", result);