14.链表中倒数第k个结点 Java
题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路
快指针和慢指针,快指针先跑K个单位然后慢指针开始跑,快指针跑到最后一个节点的时候慢指针对应的就是链表中倒数第k个结点
public static ListNode findKthNode(ListNode head, int k) {
if (head == null || k == 0) {
return null;
}
ListNode p1 = head;
ListNode p2 = head;
int count = 0;
while (count < k && p1.next != null) {
p1 = p1.next;
count++;
}
if (p1.next == null) {
return null;//k大于链表长度的情况
}
while (p1.next != null) {
p1 = p1.next;
p2 = p2.next;
}
return p2;
}