剑指 Offer 22. 链表中倒数第k个节点

题目

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。

给定一个链表: 1->2->3->4->5, 和 k = 2.

返回链表 4->5.

题解


 ListNode fast = head;
        ListNode slow = head;
        if(slow == null) {
            return null;
        }

        int index = 0;
        for(;index < k && fast != null; index++) {
            fast = fast.next;
            
        }
        // 快指针还没走到k这个差距
        if(index != k) {
            return null;
        }

        while(fast != null) {
            fast = fast.next;
            slow = slow.next;
        }

        return slow;

posted @ 2020-09-21 13:16  Cyning  阅读(104)  评论(0编辑  收藏  举报