复制数组中连接列表的一部分

时间:2016-07-11 15:43:32

标签: java arrays list

我有一系列含义:

a -> b b -> c c -> d d -> f

有时会出现循环。例如:

a -> b b -> c c -> d d -> c

我将这些含义表示为连接列表:

a -> b b -> c c -> d d -> c

a point to b, b point to c, c point to d, d point to c.

让我们将“i”称为包含循环开始的元素的列表的节点,我想将列表的第一部分从第一个元素复制到元素i-1到数组。

我正在使用java,是否有可能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我对这个问题的最终结局有点不清楚。我看到以下两部分。

第1部分。是否存在循环?

第2部分。循环从哪里开始?

对第1部分的回答。要检查是否存在循环,请在列表的开头添加2个指针,slowfast。一般的想法,

while (fast != null && fast.next != null):
    fast = fast.next.next;
    slow = slow.next;
    if fast is equal to slow:
        there is a cycle

对第2部分的回答。如果有一个循环,它从哪里开始?一般的想法是将slow指针移回列表的开头。让fast指针成为两者相遇的地方。逐步增加直到他们相遇。这将是周期的开始。试试看。 :)