最近我遇到了一个问题,我不得不对其进行编码,但未能有效地进行编码。所以我会尽力以最好的方式解释这个问题,它就像......
有不同的人属于不同的社区。比如说,1属于C1,2属于C2,3属于C3。我们可以执行两个操作,查询和加入。查询返回属于该人社区的总人数。 Join用于将两个人的社区合二为一。 我们将人数和要执行的操作数作为输入,我们需要将结果生成到标准输出上。
Example Case: (Q -> Query and J -> Join)
3 // No. of People
6 // No. of Operations
Q 1 // Prints 1
J 1,2 // Joins communities of 1 and 2
Q 1 // Prints 2
J 2,3 // Joins communities of 1 and 2
Q 3 // Prints 3
Q 1 // Prints 3
基本上,就像人们最初和加入时属于个人泡沫一样,我们加入两个民族的泡沫,形成一个包含两个人的大泡泡。 有不同的方法来解决这个问题。使用Java的ArrayList方法,非常简单。我试图用数组解决它。 我的方法是最初为每个人组成一个数组,当我们加入两个社区时,各个数组将按照所述人员添加:
Arr1 : 1 // Array for Person 1 ; Size 1
Arr2 : 2 // Array for Person 2 ; Size 1
J 1,2 results in,
Arr1 : 1,2 // Size 2
Arr2 : 2,1 // Size 2
但我被告知这不是一种有效的方法,一种有效的方法是使用链表。我无法使用链表来解决它。所以我希望你们对这个方法有一些意见,我究竟如何利用Linked List来跟踪Join操作?
很抱歉这篇长篇文章,并提前感谢:)
P.S:我不确定标题是否合适,如果不合适,请提出正确的标题。答案 0 :(得分:0)
我不知道为什么有人觉得链接列表在这个例子中比数组更好,但是加入社区就像将一个成员添加到另一个成员那样简单,并且更改所有指向现在为空社区指向包含所有成员的节点。查询应该足够简单,不言而喻。