Bird
Raised Fist0
DSA Javascriptprogramming~20 mins

Frequency Counter Pattern Using Hash Map in DSA Javascript - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Frequency Counter Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Frequency Counter for Characters
What is the output of the following JavaScript code that counts character frequencies in a string?
DSA Javascript
const str = "banana";
const freq = {};
for (const char of str) {
  freq[char] = (freq[char] || 0) + 1;
}
console.log(freq);
A{"b":1,"a":3,"n":2}
B{"b":1,"a":2,"n":3}
C{"b":1,"a":3,"n":3}
D{"b":1,"a":2,"n":2}
Attempts:
2 left
💡 Hint
Count how many times each letter appears in "banana".
❓ Predict Output
intermediate
2:00remaining
Frequency Counter for Array Elements
What will be printed after running this JavaScript code that counts frequencies of numbers in an array?
DSA Javascript
const arr = [2, 3, 2, 4, 3, 2];
const freq = {};
for (const num of arr) {
  freq[num] = (freq[num] || 0) + 1;
}
console.log(freq);
A{"2":1,"3":2,"4":3}
B{"2":2,"3":2,"4":2}
C{"2":3,"3":3,"4":1}
D{"2":3,"3":2,"4":1}
Attempts:
2 left
💡 Hint
Count how many times each number appears in the array.
🧠 Conceptual
advanced
2:00remaining
Frequency Counter Pattern Use Case
Which of the following problems is best solved using the frequency counter pattern with a hash map?
AChecking if two strings are anagrams of each other
BReversing a linked list
CFinding the maximum value in a sorted array
DCalculating the factorial of a number
Attempts:
2 left
💡 Hint
Think about comparing character counts between two strings.
🔧 Debug
advanced
2:00remaining
Identify the Bug in Frequency Counter Code
What error or issue will occur when running this code snippet?
DSA Javascript
const arr = [1, 2, 2, 3];
const freq = new Map();
for (const num of arr) {
  if (freq.has(num)) {
    freq.set(num, freq.get(num) + 1);
  } else {
    freq[num] = 1;
  }
}
console.log(freq);
AThe code will print Map(4) with correct counts
BTypeError because freq.get is not a function
Cfreq[num] = 1 does not add to Map, so counts are incorrect
DSyntaxError due to incorrect Map usage
Attempts:
2 left
💡 Hint
Check how Map objects store values and how to add new keys.
❓ Predict Output
expert
3:00remaining
Frequency Counter with Nested Objects Output
What is the output of this JavaScript code that counts frequencies of words and their first letters?
DSA Javascript
const words = ["apple", "apricot", "banana", "blueberry", "avocado"];
const freq = {};
for (const word of words) {
  const first = word[0];
  freq[first] = freq[first] || {};
  freq[first][word] = (freq[first][word] || 0) + 1;
}
console.log(freq);
A{"a":{"apple":1,"avocado":1},"b":{"banana":1,"blueberry":1,"apricot":1}}
B{"a":{"apple":1,"apricot":1,"avocado":1},"b":{"banana":1,"blueberry":1}}
C{"a":{"apple":1,"apricot":1,"avocado":1,"banana":1},"b":{"blueberry":1}}
D{"a":{"apple":1,"apricot":1},"b":{"banana":1,"blueberry":1,"avocado":1}}
Attempts:
2 left
💡 Hint
Group words by their first letter and count each word's frequency.

Practice

(1/5)
1. What is the main purpose of using a frequency counter pattern with a hash map in JavaScript?
easy
A. To reverse the order of elements in an array
B. To sort the elements in ascending order
C. To remove duplicate items from a list
D. To count how many times each item appears in a collection

Solution

  1. Step 1: Understand frequency counter pattern

    The frequency counter pattern uses a hash map to store counts of each item in a collection.
  2. Step 2: Identify the purpose

    Counting occurrences helps to quickly check how many times each item appears.
  3. Final Answer:

    To count how many times each item appears in a collection -> Option D
  4. Quick Check:

    Frequency counter = count items [OK]
Hint: Frequency counter counts items using a hash map [OK]
Common Mistakes:
  • Confusing frequency counting with sorting
  • Thinking it removes duplicates instead of counting
  • Assuming it reverses arrays
2. Which of the following is the correct way to initialize an empty frequency counter object in JavaScript?
easy
A. const freq = [];
B. const freq = {};
C. const freq = null;
D. const freq = 0;

Solution

  1. Step 1: Identify correct data structure for frequency counter

    A frequency counter uses an object (hash map) to store keys and counts.
  2. Step 2: Choose correct initialization syntax

    In JavaScript, an empty object is created with curly braces {}.
  3. Final Answer:

    const freq = {}; -> Option B
  4. Quick Check:

    Empty object = {} [OK]
Hint: Use {} to create empty object for frequency counter [OK]
Common Mistakes:
  • Using array [] instead of object {}
  • Assigning null or 0 which are not objects
  • Confusing object with other data types
3. What will be the output of the following code?
const arr = ['a', 'b', 'a', 'c', 'b', 'a'];
const freq = {};
for (const char of arr) {
  freq[char] = (freq[char] || 0) + 1;
}
console.log(freq);
medium
A. {"a": 3, "b": 2, "c": 1}
B. {"a": 1, "b": 1, "c": 1}
C. {"a": 2, "b": 3, "c": 1}
D. {"a": 3, "b": 3, "c": 1}

Solution

  1. Step 1: Loop through array and count characters

    Each character's count is incremented in freq object: 'a' appears 3 times, 'b' 2 times, 'c' 1 time.
  2. Step 2: Construct final frequency object

    freq = {"a": 3, "b": 2, "c": 1} after loop ends.
  3. Final Answer:

    {"a": 3, "b": 2, "c": 1} -> Option A
  4. Quick Check:

    Count 'a' = 3, 'b' = 2, 'c' = 1 [OK]
Hint: Count each char incrementally using freq[char] = (freq[char]||0)+1 [OK]
Common Mistakes:
  • Mixing counts of 'a' and 'b'
  • Not initializing counts properly
  • Using arrays instead of objects for counting
4. Identify the error in the following frequency counter code and select the fix:
const arr = ['x', 'y', 'x', 'z'];
const freq = {};
for (let i = 0; i < arr.length; i++) {
  freq[arr[i]] += 1;
}
console.log(freq);
medium
A. Initialize freq[arr[i]] to 0 before adding 1
B. Change for loop to for...of loop
C. Use freq.push(arr[i]) instead of freq[arr[i]]
D. Declare freq as an array instead of object

Solution

  1. Step 1: Understand the error cause

    freq[arr[i]] is undefined initially, so adding 1 causes NaN.
  2. Step 2: Fix by initializing count

    Set freq[arr[i]] = 0 if undefined before adding 1.
  3. Final Answer:

    Initialize freq[arr[i]] to 0 before adding 1 -> Option A
  4. Quick Check:

    Initialize before increment to avoid NaN [OK]
Hint: Always initialize count to 0 before incrementing [OK]
Common Mistakes:
  • Trying to push to object as if array
  • Ignoring undefined initial values
  • Changing loop type unnecessarily
5. Given two arrays, arr1 = [1, 2, 2, 3] and arr2 = [2, 3, 3, 4], which code snippet correctly checks if arr2 contains the same frequency of elements as arr1 using the frequency counter pattern?
hard
A. const freq1 = {}; const freq2 = {}; for (const num of arr1) freq1[num] = (freq1[num] || 0) + 1; for (const num of arr2) freq2[num] = (freq2[num] || 0) + 1; for (const key in freq1) { if (freq1[key] !== freq2[key]) return false; } return true;
B. const freq = {}; for (const num of arr1) freq[num] = 1; for (const num of arr2) freq[num] = 0; return Object.values(freq).every(v => v === 0);
C. const freq = {}; for (const num of arr1) freq[num] = (freq[num] || 0) + 1; for (const num of arr2) freq[num] -= 1; for (const key in freq) { if (freq[key] !== 0) return false; } return true;
D. const freq1 = new Map(); const freq2 = new Map(); arr1.forEach(num => freq1.set(num, (freq1.get(num) || 0) + 1)); arr2.forEach(num => freq2.set(num, (freq2.get(num) || 0) + 1)); return [...freq1.entries()].every(([key, val]) => freq2.get(key) === val);

Solution

  1. Step 1: Understand frequency comparison logic

    We must count frequencies in both arrays and compare counts for each element.
  2. Step 2: Analyze each code snippet

    const freq = {}; for (const num of arr1) freq[num] = (freq[num] || 0) + 1; for (const num of arr2) freq[num] -= 1; for (const key in freq) { if (freq[key] !== 0) return false; } return true; This uses a single object: increments for arr1, decrements for arr2 (NaN for extras), checks all zero. Handles extras (NaN≠0), shortages (positive≠0), overcounts (negative≠0).
  3. Final Answer:

    const freq = {}; increment arr1, decrement arr2, check all zero -> Option C
  4. Quick Check:

    Single freq: +arr1, -arr2, all zero? [OK]
Hint: Increment arr1 counts, decrement arr2, check all zero for same frequency [OK]
Common Mistakes:
  • Not comparing all keys in both frequency counters
  • Overwriting counts instead of incrementing
  • Using single frequency object incorrectly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard