1. 题目
1640. 能否连接形成数组
![在这里插入图片描述](https://img-blog.csdnimg.cn/caabcd5c10c540c58a18c8d5c8c39331.png)
2. 思路
- 构建哈希表,键为pieces中的每个数组的第一个元素,值为整个数组元素
- 遍历arr,如果出现了和pieces中不存在的元素,直接返回false
- 否则,遍历当前pieces中的数组元素,这时候要从第二个元素开始比较,遇到不同的就直接返回false
- 如果到最后也没有返回false,则说明可以拼接,返回true
3. 代码
let arr = [49,18,16], pieces = [[16,18,49]]
function canFormArray(arr, pieces) {
let map = new Map()
pieces.forEach(item => {
map.set(item[0], item)
})
for (let i = 0; i < arr.length; i++) {
if (map.has(arr[i]) === false) return false
let item = map.get(arr[i])
for (let j = 1; j < item.length; j++) {
i++
if (arr[i] !== item[j]) return false
}
}
return true
}
console.log(canFormArray(arr, pieces));