定义两个节点变量p1,p2,
从头到尾开始出发,p1先往前迭代k个节点,然后P1、P2同速往前走,当P1的nextNode为空(即P1到达链表终点)时,
P2所在的位置就是链表的倒数第k个节点的位置。
P1__________________________________________
| |
_______________________|__________________________________________\|/____
| |
| Node1 Node1 ... NodeK NodeK+1 ... Node(size-k) ... Node(size)|
|_________________________________________________________________________|
| /|\
| |
P2__________________________________________|
public static Node findKth(Node head,int k){
ListNode P1=head,P2=head;
for(int i=0;i<k && P1!=null;i++){
P1=head.nextNode();
}
if(P1==null){
return null;
}
for(;(P1=P1.nextNode())!=null;){
P2=P2.nextNode();
}
return P2;
}