Leetcode-editorials
Contribute
  • Leetcode question of the day
  • 08-August
    • 26. Maximum Length of Pair Chain
    • 28. Implement stack using queues
    • 29. Minimum Penalty for a Shop
    • 30. Minimum Replacements to Sort the Array
    • 31. Minimum Number of Taps to Open to Water a Garden
  • 09-September
    • 01. Counting Bits
    • 02. Extra Characters in a String
    • 03. Unique Paths
    • 04. Linked List Cycle
    • 05. Copy List with Random Pointer
    • 06. Split Linked List in Parts
    • 07. Reverse Linked List II
    • 08. Pascal's Triangle
    • 09. Combination Sum IV
    • 10. Count All Valid Pickup and Delivery Options
    • 11. Group the People Given the Group Size They Belong To
    • 12. Minimum Deletions to Make Character Frequencies Unique
    • 13. Candy
    • 14. Reconstruct Itinerary
    • 15. Min Cost to Connect All Points
    • 16. Path With Minimum Effort
    • 17. Shortest Path Visiting All Nodes
    • 18. The K Weakest Rows in a Matrix
    • 19. Find the Duplicate Number
    • 20. Minimum Operations to Reduce X to Zero
    • 21-Median of Two Sorted Arrays
    • 22- Is Subsequence
    • 23- Longest String Chain
    • 24- Champagne Tower
    • 25- Find the Difference
    • 26- Remove Duplicate Letters
    • 27- Decoded String at Index
    • 28- Sort Array By Parity
    • 29- Monotonic Array
    • 30- 132 Pattern
  • 10-October
    • 01. Reverse Words in a String III
    • 02. Remove Colored Pieces if Both Neighbors are the Same Color
    • 03. Number of Good Pairs
    • 04. Design HashMap
    • 05. Majority Element II
    • 06. Integer Break
    • 07. Build Array Where You Can Find The Maximum Exactly K Comparisons
  • 11-November
    • 01. Find Mode in Binary Search Tree
    • 02. Count Nodes Equal to Average of Subtree
    • 03. Build an Array With Stack Operations
    • 04. Last Moment Before All Ants Fall Out of a Plank
    • 07. Eliminate Maximum Number of Monsters
  • Leetcode Contests
    • Weekly Contest
      • Weekly-Contest-360
Powered by GitBook
On this page
  • My Approach
  • Time and Auxiliary Space Complexity
  • Code (C++)
  • Contribution and Support

Was this helpful?

Edit on GitHub
  1. 10-October

04. Design HashMap

Previous03. Number of Good PairsNext05. Majority Element II

Last updated 1 year ago

Was this helpful?

The problem can be found at the following link:

My Approach

  1. Class Declaration:

    • The MyHashMap class is declared.

    • It includes a private data member mp, which is a vector of lists of pairs. This data structure will be used to implement a hash map.

    • Another private data member size is initialized to 10. This represents the initial size of the hash map.

    • The constructor MyHashMap is defined, which resizes the mp vector to the specified size.

  2. Hash Function:

    • The hash method is defined to compute the hash value for a given key. It uses the modulo operation (key % size) to map keys to a valid index within the range of the mp vector.

  3. put Method:

    • The put method is used to insert a key-value pair into the hash map.

    • It calculates the index i using the hash function.

    • It iterates through the list at index i using a for loop.

    • Inside the loop, it checks if the key already exists in the list. If it does, it updates the corresponding value and returns.

    • If the key doesn't exist in the list, it adds a new pair (key, value) to the list.

  4. get Method:

    • The get method is used to retrieve the value associated with a given key from the hash map.

    • It calculates the index i using the hash function.

    • It iterates through the list at index i using a for loop.

    • Inside the loop, it checks if the key matches the key in the pair. If it finds a match, it returns the corresponding value.

    • If it doesn't find a match after iterating through the list, it returns -1 to indicate that the key was not found.

  5. remove Method:

    • The remove method is used to delete a key-value pair from the hash map.

    • It calculates the index i using the hash function.

    • It iterates through the list at index i using a for loop.

    • Inside the loop, it checks if the key matches the key in the pair. If it finds a match, it removes that pair from the list using the erase method and returns, effectively deleting the key-value pair.

Time and Auxiliary Space Complexity

  • Time Complexity: O(n)

  • Auxiliary Space Complexity: O(n)

Code (C++)


class MyHashMap {
public:
    vector<list<pair<int,int>>>mp;
    int size=10;
    MyHashMap() {
       mp.resize(size); 
    }
    int hash(int key)
    {
        return key%size;
    }
    void put(int key, int value) {
       int i=hash(key);
        for(auto it=mp[i].begin();it!=mp[i].end();it++)
        {
            if(it->first==key)
            {
                it->second=value;
                return;
            }
        }
        mp[i].push_back({key,value});
    }
    
    int get(int key) {
       
        int i=hash(key);
        for(auto it=mp[i].begin();it!=mp[i].end();it++)
        {
            if(it->first==key)
            {
                return it->second;
            
            }
        }
        return -1;
    }
    
    void remove(int key) {
      
        int i=hash(key);
        for(auto it=mp[i].begin();it!=mp[i].end();it++)
        {
            if(it->first==key)
            {
               mp[i].erase(it);
                return;
            }
        }
    }
};

Contribution and Support

For discussions, questions, or doubts related to this solution, please visit our . We welcome your input and aim to foster a collaborative learning environment.

If you find this solution helpful, consider supporting us by giving a ⭐ star to the repository.

Question Link
discussion section
rishabhv12/Daily-Leetcode-Solution