Degree of an Array

EasyArrayHash Table

Solution

export function findShortestSubArray(nums: number[]): number {
  const counter = new Map<number, number>();
  const firstIndices = new Map<number, number>();
 
  let answer = 0;
  let degree = 0;
  nums.forEach((num, i) => {
    const firstIndex = firstIndices.get(num) ?? i;
    firstIndices.set(num, firstIndex);
    const count = (counter.get(num) ?? 0) + 1;
    counter.set(num, count);
    if (degree < count) {
      degree = count;
      answer = i - firstIndex + 1;
    } else if (degree == count) {
      answer = Math.min(answer, i - firstIndex + 1);
    }
  });
 
  return answer;
}