栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Leetcode-1 两数之和(STL, hashTable, unordered

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode-1 两数之和(STL, hashTable, unordered

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;语句放置位置的区别

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012271.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号