use*_*576 7 java algorithm grouping
我有以下课程:
class Sport {
private String sportsName;
private List<People> peopleWhoPlayThisSport;
//...
}
Run Code Online (Sandbox Code Playgroud)
class People {
private String name;
private long uniqueId;
// ...
}
Run Code Online (Sandbox Code Playgroud)
我的输入是运动对象列表,为简单起见,请考虑以下示例:
sport1 - Football, <Sam, Dylan>
sport2 - Basketball, <Tyler, John>
sport3 - Baseball, <Carter, Dylan>
sport4 - Hockey, <Kane, Michael>
sport5 - Soccer, <Carter, Frank>
Run Code Online (Sandbox Code Playgroud)
我必须创建一个List<List<>>,这样内部列表就是所有具有至少一个普通玩家的体育项目(此处适用传递属性).在上面的例子中,输出应该是,
<<sport1,sport3,sport5> , <sport2> , <sport4>>
Run Code Online (Sandbox Code Playgroud)
有关解决此问题和/或伪代码的任何建议吗?
对我来说听起来像图形问题.我要做的是:
所以图表会以这种方式增长:
和"运动":
==>(足球,棒球,足球),(篮球),(曲棍球)
编辑: 您可以选择优化每个组件的算法,您将记住与之相关的运动.换句话说,在创建边缘时,您将为该组件的运动集合添加运动.然后将不再需要"应用运动"步骤.一个简单的规则,当两个组件连接时,您将在添加新运动之前结合运动系列.然后算法会:
请注意,图表的使用不是必需的.您仍然可以使用简单的集合,但图表似乎是最干净的方法和算法最佳方式.它还允许进一步的可扩展性,因为它以自然的方式对数据进行建模 - 例如,您可以进一步找出Sam与Carter在一起的原因(因为他们的共同朋友Dylan与他们两人一起玩不同的运动).