Leetcode-1 两数之和(STL, hashTable, unordered_map)

Posted 哈拉泽空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode-1 两数之和(STL, hashTable, unordered_map)相关的知识,希望对你有一定的参考价值。

1. 总结:通过此题掌握map和unordered_map两种容器的底层原理,区别,用法

2. 题意:给出一个数组,一个target,如何快速找到两个数之和等于target。

3. 题解:使用STL中的unordered_map

(1)map和unordered_map的实现机理:
map:是基于红黑树来实现的(红黑树是非常严格的平衡二叉搜索树),红黑树具有自动排序功能,红黑树的每一个节点都代表着map中的一个元素,因此对于map的查找,删除和插入操作都是对红黑树的操作。
unordered_map:是基于哈希表来实现的,查找的时间复杂度是O(1),在海量数据处理中有着广泛的应用。
 
(2)map和unordered_map的优缺点
map的优点:(1)map是有序的(2)基于红黑树实现,查找的时间复杂度是O(n)
map的缺点:空间占用率比较高,因为内部实现了红黑树,虽然提高了运行效率,但是每个节点都要保存父亲节点和孩子节点和红黑树的性质,使得每一个节点都占用大量的空间。
适用的情况:对于要有序的结构,适用map
unordered_map的优点:因为内部是哈希表来实现的,所以查找效率会非常高
unordered_map的缺点:哈希表的建立比较费时
适用的情况:对于查找问题,适用unordered_map会更好一点。
以上知识点:C++ map和unordered_map的区别和联系以及map的使用
 

(3)unordered_map.find(key): 查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();

(4)对于vector,可以直接用1,2,3这样传入来进行初始化,类似于数组

(5)此题中注意mp[target-nums[i]]=i;语句放置位置的区别

以上是关于Leetcode-1 两数之和(STL, hashTable, unordered_map)的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode-1 两数之和(STL, hashTable, unordered_map)

1. 两数之和

1. 两数之和

Leetcode 1. 两数之和(带图)

算法 Notes|LeetCode 1. 两数之和 - easy

LeetCode 1