力扣第一题:哈希表判断匹配与否
文章目录
给你一个整数数组 arr ,数组中的每个整数 互不相同 。另有一个由整数数组构成的数组 pieces,其中的整数也 互不相同 。请你以 任意顺序 连接 pieces 中的数组以形成 arr 。但是,不允许 对每个数组 pieces[i] 中的整数重新排序。
来源:力扣(LeetCode)
由于题目中不允许对存储在数组中的整数进行排序,我们可以使用哈希表来解决这个问题
先决知识
unordered_map 容器基本介绍
unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。以键值对(pair类型)的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。但由于 unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。
我们创建一个都是整数类型的map来记录数据之间的联系关系unordered_map<int, int> match
对于生成的map match
,我们通过auto it = mathc.begin()
来获取这个map的第一个元素,接下来我们就可以
通过it
来访问这整个元素
通过it->first
来访问这个元素的key值
通过it->second
来访问这个元素的value值
auto 基本介绍
根据后面的值,来自己推测前面的类型是什么,从而简化变量初始化的操作,而且一次进行定义时,需要定义的变量也都是同一类型
解题整体思路
对于给定序列中的数,首先从链接中的第一个数字开始比较 找到之后,查看链接中是否还有后续的数字 若有,在给定序列中查看是否符合 若无,从当前链接的首位在列表中首位的前一位或末位在列表中的后一位进行下次比较 全部比较完后即为true
代码
|
|