定义一个快结点和一个慢结点,思路如下:
代码:
public class Main{
public Node findNodes(Node head, int k) {
Node fastNode = head;
Node slowNode = head;
for(int i =1; i <= k; i++) {
fastNode = fastNode.next;// 快结点移动到第k个位置
}
while(fastNode != null) {
fastNode = fastNode.next;
slowNode = slowNode.next;// 慢结点移动到倒数第k个位置
}
return slowNode;
}
class Node {
int value;
Node next;
Node () {}
Node(int value) {
this.value = value;
}
}
}
时间复杂度:
空间复杂度: