剑指offer:面试题15链表中倒数第 K 个结点

Posted itxiaolei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer:面试题15链表中倒数第 K 个结点相关的知识,希望对你有一定的参考价值。

题目描述

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

代码示例

//双指针,两个指针指向头结点,一个指针先走K步,然后两个指针一直向前移动
//直到先走的指针指向链表末尾,后走的指针指向的节点即为倒数第K个节点
public class Offer15 {
    public static void main(String[] args) {
        //构建链表
        ListNode head = new ListNode(1);
        head.next = new ListNode(2);
        head.next.next = new ListNode(3);
        head.next.next.next = new ListNode(4);
        Offer15 testObj = new Offer15();
        ListNode res = testObj.findKthToTail(head, 2);
        System.out.println(res.val);
    }

    public ListNode findKthToTail(ListNode head, int k) {
        if (head == null) {
            return null;
        }
        ListNode preP = head;
        while (preP != null && k-- > 0) {
            preP = preP.next;
        }

        if (k > 0)
            return null;
        ListNode postP = head;
        while (preP != null) {
            preP = preP.next;
            postP = postP.next;
        }
        return postP;
    }

    static class ListNode {
        int val;
        ListNode next;
        ListNode(int val) {
            this.val = val;
        }
    }
}

以上是关于剑指offer:面试题15链表中倒数第 K 个结点的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer面试题15(Java版):链表中倒数第K个结点

《剑指offer》面试题10:链表中倒数第k个节点

剑指Offer对答如流系列 - 链表中倒数第k个结点

《剑指offer》第二十二题:链表中倒数第k个结点

《剑指offer》第二十二题(链表中倒数第k个结点)

剑指Offer-代码的鲁棒性面试题22:链表中倒数第k个节点