Relative Sort Array

EasyArrayHash TableSortingCounting Sort

Solution

export function relativeSortArray(arr1: number[], arr2: number[]): number[] {
  const indicies = new Map(arr2.map((num, i) => [num, i]));
  const getIndex = (num: number) => indicies.get(num) ?? arr2.length;
  const sortByIndex = (a: number, b: number): number => {
    const [aIndex, bIndex] = [getIndex(a), getIndex(b)];
    return aIndex === bIndex ? a - b : aIndex - bIndex;
  };
  return arr1.sort(sortByIndex);
}