Missing Numbers

  • + 0 comments

    Typescript:

    function missingNumbers(arr: number[], brr: number[]): number[] {
        // convert all of arr to arrMap
        const arrMap = new Map();
        let shifted;
        while(arr.length){
            shifted = arr.shift();
            arrMap.set(shifted, (arrMap.get(shifted) || 0) + 1);
        }
        const diff = new Set<number>();
        
        // remove any brr that matches in arrMap,
        // then remove from arrMap and brr
        // any non matches, save in diff
        while(brr.length){
            shifted = brr.shift();
         if (arrMap.has(shifted)) {
            arrMap.set(shifted, arrMap.get(shifted) - 1);
            if (arrMap.get(shifted) === 0) {
                arrMap.delete(shifted);
            }
         } else {
            diff.add(shifted);
         }
        }
        // diff is prefiltered and just needs to be sorted
        return Array.from(diff).sort((a, b) => a - b);
    }