有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

    第一部分。有循环吗

    第二部分。循环从哪里开始

    第一部分。要检查是否存在循环,请在列表的开头放置两个指针slowfast。总的来看,

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

    第二部分的答复。如果有一个循环,它从哪里开始?其基本思想是将slow指针移回列表的开头。让fast指针位于两者相遇的地方。一步一步地增加,直到它们相遇。这将是周期的开始。试试看。:)