容器
在这道题中输入类似[[1, 2], [3, 4]] ,这意味着花园1连通了花园2,花园3连通了花园4。那么该怎么根据这个输入,获取一个方便后面算法的表示呢?我们通常管这种存放邻居的数据格式叫做:邻接表
通常我的思路是使用下列容器作为邻接表:
- 哈希表,key就是花园i,value是与花园 i 接壤的其他所有花园。
- 二维数组,第 i 个数组中的元素是与花园 i 接壤的其他所有花园。
算法
假如题目给的是一颗二叉树,要求相邻节点颜色不同,那我们可以用回溯解决。但使用哈希表或者二维数组作为容器,该怎么解决这题?
方法一:模拟 / 枚举
对于每个节点,先看一下与它连接的节点取了哪些值,然后从剩下的值中取一个。
难点是如何从颜色1-4中,排除连接的节点的值,还有如何从剩下的值中取一个。