跳至主要內容

HashMap

Someone大约 1 分钟

HashMap

HashMap in Python - Counter

from collections import Counter

在腾讯面试的过程中,被问到了一个题目,要求找出一个数组中第一个单独出现的数字,例如 [2, 4, 2, 3, 1, 3], 则结果应该是 4.

题目如果用 hashmap 去求解的话只需要:


from collections import Counter
nums = [2, 4, 2, 3, 1, 3]

nums_counter = Counter(nums)

res = min(nums_counter, key = nums_counter.get)

Counter 为 Python 内置的 hashmap, 具体可以查询 Counteropen in new window, 对于那个排序而言,key 会指定一个函数用于元素的比较,nums_counter.get() 方法用于得到某个 key 的 value 值。

unordered_map

Conclusion: unordered_map is generally use more memory, better for lookup-retrieval, much slower at repeatedly inserting and removing elements.

Code example for map usage: GitHubopen in new window: 如何遍历、赋值。

关联容器 unordered_map 的初始化:

unordered_map<char, int> roman = {
    {'I', 1},
    {'V', 5}
};

也可以利用 for 循环赋值初始化,具体参照上述 GitHub 示例。

拓展

Python map 的初始化比较简单:

mapping = {
    "]":"[",
    "}":"{"
}

注意加以区别!

map

Example: 单词计数器open in new window

Using map's includes:

#include <map>
#include <string>
using Map = std::map<std::string, std::size_t>;

Map my_map;
auto count()
{
    Map counts;
    for (string w; cin >> w; ++counts[w])
        ;
    return counts;
}

Print this map's key and value:

for(auto &kv : my_map)
    std::cout << kv.first << : << kv.second << std::endl;
    // words : counts