题目
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。
思路
双指针,先利用一个指针走k步,停下来。然后再利用第一个指针从头往后走,当第二个指针到达终点时,第一个指针刚刚好到达k个节点。【因为第一个指针走了k步后,剩下的是n-k,第二个指针再走n-(n-k)就是k步】!
代码
class Solution {
public ListNode getKthFromEnd(ListNode head, int k)
{
int fast = 0;
ListNode copy = head;
while(fast<k)
{
++fast;
copy=copy.next;
}
while(copy!=null)
{
head=head.next;
copy=copy.next;
}
return head;
}
}