链表中倒数第k个节点

64 阅读1分钟

链表中倒数第k个节点

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

注意:
k >= 0;
如果k大于链表长度,则返回 NULL;

样例
输入:链表:1->2->3->4->5 ,k=2
输出:4

遍历

时间复杂度O(n)

class Solution {
    public ListNode findKthToTail(ListNode pListHead, int k) {
        if(pListHead == null || k == 0){
            return null;
        }
        int count = 0;
        ListNode listNode = pListHead;
        while(listNode != null){
            count++;
            listNode = listNode.next;
        }
        if(k > count){
            return null;
        }
        listNode = pListHead;
        int res = count - k;
        while(listNode != null){
            if(res == 0){
                return listNode;
            }
            res--;
            listNode = listNode.next;
        }
        return null;
    }
}