解题思路借鉴 https://juejin.im/entry/5ad76bddf265da504460302f
代码不一样
题目描述
输入一个链表,输出该链表中倒数第k个结点。
标题思路
为了能够只遍历一次就能找到倒数第k个节点,可以定义两个指针:
快指针从链表的头指针开始遍历向前走k-1,慢指针保持不动;
从第k步开始,慢指针也开始从链表的头指针开始遍历;
由于两个指针的距离保持在k-1,当快指针到达链表的尾结点时,慢指针正好是倒数第k个结点。
下图是找到该链表的倒数第3个结点的示意图。
代码
public ListNode getKthFromEnd(ListNode head, int k) {
if(head.next==null&&k==1) return head;
ListNode first=head;
ListNode second=head;
while(k - 1 > 0) {
k--;
first = first.next;
}
while (first.next!=null){
first=first.next;
second=second.next;
}
return second;
}