我想将多个项目列表合并到一个列表中,保留整体订单要求。即:
1: A C E
2: D E
3: B A D
result: B A C D E
以上,从列表1开始,我们有ACE,然后我们知道D必须在E之前,而从列表3,我们知道B必须在A之前,D必须在B和A之后。
如果订单存在冲突,则应使用第一个订购。即
1: A C E
2: B D E
3: F D B
result: A C F B D E
3与2(B D vs D B)冲突,因此将使用2的要求。
如果订购要求意味着某件商品必须在另一件商品之前或之后,则无论是在订单之前或之后,还是在列表的开头或结尾,都无关紧要,只要保持整体订购。
这是使用VB.Net开发的,所以LINQy解决方案(或任何.Net解决方案)会很好 - 否则指针的方法会很好。
编辑:编辑以使示例2有意义(最后一分钟的更改使其无效)
答案 0 :(得分:3)
您可能感兴趣的关键字是“拓扑排序”。基于此的解决方案如下所示: