链表中的倒数第K个节点-22
输入一个链表,输出该链表中倒数第k个结点。
注意:
k >= 0
;- 如果k大于链表长度,则返回 NULL;
样例
输入:链表:1->2->3->4->5 ,k=2
输出:4
思路:
快慢指针,快指针先走 n-1 步,然后两个指针一起走,快指针到达链表尾时,满指针就是要求的节点。
class Solution{
public static ListNode findKthToTail(ListNode listHead, int k) {
if (listHead == null || k <= 0)
return null;
ListNode ahead = listHead; // 前一个指针
// 让 ahead向前走 k - 1 步
for (int i = 1; i <= k - 1; i++) {
if (ahead.next != null)
ahead = ahead.next;
else // 当链表长度小于 k时,返回 null
return null;
}
ListNode behind = listHead; // 后面的指针
while (ahead.next != null) {
ahead = ahead.next;
behind = behind.next;
}
return behind;
}
}