Frequency Queries

  • + 0 comments

    My solution is slightly more verbose but does more or less the same thing but also doesn't pass 7 - 13.

    // Complete the freqQuery function below.
    function freqQuery(queries) {
        let hashMap = {};
        let freqMap = [];
        let results = [];
    
        for(let q in queries) {
            let action = queries[q][0];
            let actionValue = queries[q][1];
            let oldValue = hashMap[actionValue] || 0
    
            if(action === 1) {
                hashMap[actionValue] = oldValue + 1;
                setFreqMapValue(oldValue, hashMap[actionValue], freqMap);
            } else if(action === 2) {
                hashMap[actionValue] = oldValue - 1
                setFreqMapValue(oldValue, hashMap[actionValue], freqMap);
            } else if (action === 3) {
                results.push(freqMap[actionValue] > 0 ? 1 : 0);
            }
        }
    
        return results;
    
    }
    
    function setFreqMapValue(oldValue, newValue, freqMap) {
        let oldFreq = freqMap[oldValue] || 0;
        let newFreq = freqMap[newValue] || 0;
        if(oldFreq > 0) {
            freqMap[oldValue] -= 1;
        }
        freqMap[newValue] = newFreq +1;
    }