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;
}
posted @ 2019-03-14 15:39  飞晨信息  阅读(181)  评论(0编辑  收藏  举报