java复制数组中连接列表的一部分
我有一系列的含义如下:
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 楼答案
我对你这个问题的结局有点不清楚。我看到以下两个部分
第一部分。有循环吗
第二部分。循环从哪里开始
第一部分。要检查是否存在循环,请在列表的开头放置两个指针
slow
和fast
。总的来看,第二部分的答复。如果有一个循环,它从哪里开始?其基本思想是将
slow
指针移回列表的开头。让fast
指针位于两者相遇的地方。一步一步地增加,直到它们相遇。这将是周期的开始。试试看。:)