这是一个有趣的隐喻问题:
假设我得到了一份人员名单,而且人们都是大人物,父亲和孩子。
Eg:(badly scrambled)
[Kid1, Kid2, GrandPa2, GrandPa3, Father1, Father3, Kid4, Father4, kid5]
我想对它们进行排序:
[Father1-Kid1, GrandPa2, Kid2, GrandPa3-Father3, Father4-Kid4, Kid5]
只需替换上面的列表 - 用,并且它毕竟是一个列表。
我该如何排序?我尝试过Comparator,它变得非常复杂,许多匹配杀死了性能。
PS-我在每个ms JVM花费的环境中工作,请引导我通过一些最佳方式。
注意:除了List之外不能使用任何东西。
到目前为止我做了什么:
将所有grandPas放在一个列表中,然后将父亲添加到相关的爷爷索引中,同样适用于孩子。我觉得这很好用,可能会更快吗?
答案 0 :(得分:2)
也许你不应该使用列表。使用一些树结构来表示元素的层次结构(如果某些元素不相关,则使用森林)。然后遍历该树可以按照您希望的顺序生成元素。
答案 1 :(得分:1)
您可以按编号将所有条目分组到ID的集合列表中。例如以1
结尾的所有内容都会进入列表[1],以2
结尾的所有内容都会进入列表[2]。一旦条目被分类到数字,您可以根据需要合并这些条目。
这应该让你接近O(N)时间。