题目描述
输入一个链表,输出该链表中倒数第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;
}
本文介绍了一种使用快慢指针技术找到链表中倒数第K个结点的高效算法。通过两个指针的巧妙配合,当快指针到达链表尾部时,慢指针恰好指向目标结点,解决了传统遍历两次链表的问题。
295

被折叠的 条评论
为什么被折叠?



