链表中倒数第k个结点
-
输入一个链表,输出该链表中倒数第k个结点。如果该链表长度小于k,请返回空。
-
输入:{1,2,3,4,5},1
-
返回值:{5}
-
思路:利用快慢指针,第一个指针先移动K步,第二个指针开始链表的头移动,之后两个指针一起移动,当第一个指针指向末尾时,第二个指针指向倒数第K个节点
public ListNode FindKthToTail (ListNode pHead, int k) {
if (pHead == null)
return pHead;
ListNode first = pHead;
ListNode second = pHead;
//第一个指针先走k步
while (k-- > 0) {
if (first == null)
return null;
first = first.next;
}
//然后两个指针在同时前进
while (first != null) {
first = first.next;
second = second.next;
}
return second;
}