单向链表倒数第k个结点
难易度:简单
使用两个引用指向链表中的结点,并使两者之间相隔(k-1)个结点,如此,当快的引用指向尾结点时,慢的引用指向倒数第k个结点。
代码如下:
public class Main {
public ListNode findKthToTail(ListNode head,int k) {
ListNode node1 = head;
ListNode node2 = head;
for(int i = 1; i < k && node2 != null; i++) //node2向后移动k-1个结点
{
node2 = node2.next;
}
if(k < 1 || node2 == null)
return null;
while(node2.next != null) //node2移动至尾结点,此时node1为倒数第k个结点
{
node1 = node1.next;
node2 = node2.next;
}
return node1;
}
}