例如,考虑一个非环绕式4x4矩阵;
1 2 5 1
5 2 5 2
9 3 1 7
2 9 0 3
如果我想找到第一行中的5的邻居= 2,5,1。有没有比做两个for循环和添加一堆if条件更有效的解决方案?
答案 0 :(得分:2)
是。如果你真的需要找到邻居,那么你可以选择使用图表。
图形基本上是与其相邻顶点相对应的顶点类,形成边缘。我们在这里可以看到2形成一个边缘w / 5,1个形成一个边缘w / 5等等。
如果你需要非常频繁地知道邻居(因为如果你不这样做,效率很低),那么实现你自己的顶点类,将值(5)包装在一个通用的T val变量中。有一个相邻数字的哈希表和它们各自的距离(在这种情况下为1,如果你需要找到2的邻居,那么你还需要分配它们)通过将(顶点,距离)添加到哈希表中。
稍后,只需遍历邻居的哈希表即可。
但是,对于一个这么简单的数组,只需要执行for循环并使用“一堆if语句”就没有多少开销。实际上,您只需要对每个方向(4)进行if(边界检查)。
希望这有帮助。