Leetcode每日一题2020.11.04第1640题:能否连接形成数组

1640.能否连接形成数组

题目描述

在这里插入图片描述

示例

在这里插入图片描述

思路、算法及代码实现

方法一:
通过示例可寻找到规律:先从arr数组中取出一个元素整数i,再去pieces数组中依次遍历是否有元素数组j[],使得j[0]=i,如果成立,则将数组j[]放入结果数组里。因为题目要求不能改变j[]中元素的顺序,所以我们可以把pieces中的每一个j[]看作一个整体,当arr中的一个元素i与b中第一个元素j[0]相等时,可以先假定j[]是arr[]中的一个块,加到结果数组中,最后再比较结果数组与arr是否相等,这也是一种“先污染再治理”的思想。
代码如下:
在这里插入图片描述
方法二:
也是先判断arr数组中的一个元素是否与pieces中元素数组的第一个元素匹配,用的是哈希表这种数据结构。但此种方法在方法一的基础上,又设计了比较pieces元素数组中数字顺序是否与arr中数字顺序一致的算法,与常规思路相符,但没第一种方法巧妙。
代码如下:
在这里插入图片描述

小知识:哈希表(Hash)

		参考“数据结构 Hash表(哈希表)”——洌冰

猜你喜欢

转载自blog.csdn.net/m0_51210480/article/details/109533864