链表中倒数第k个节点

题目描述

输入一个链表,输出该链表中倒数第k个结点。

详解

采用两个指针,快指针与慢指针。

快指针先向前k-1步。然后两个指针同时走,当快指针到达最后一个节点时,此时慢指针即为倒数第k个节点。

时间复杂度为O(n)。

public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        ListNode fast = head;
        ListNode slow = head;
        for (int i = 0;i<k;i++){
            if (fast == null){
                return null;
            }
            fast = fast.next;
        }
        while (fast != null){
            fast = fast.next;
            slow = slow.next;
        }
        return slow;
    }
}

 

posted @ 2020-03-18 20:35  xxcnotes  阅读(75)  评论(0)    收藏  举报