链表中倒数第k个结点

链表中倒数第k个结点

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

代码实现

package 剑指offer;


/**
 * @author WangXiaoeZhe
 * @Date: Created in 2019/11/22 15:35
 * @description:
 */

public class Main6 {

    public class ListNode {
        int val;
        ListNode next = null;

        ListNode(int val) {
            this.val = val;
        }
    }

    public static void main(String[] args) {

    }

    public ListNode getK(ListNode head, int k) {
        if (head == null) {
            return head;
        }
        if (k <= 0) {
            return null;
        }

        /**
         * 快慢指针
         */

        ListNode pre = head;
        ListNode last = head;
        for (int i = 0; i < k; i++) {
            if (pre.next != null) {
                pre = pre.next;
            } else {
                return null;
            } 
        }

        while(pre.next!=null){
            pre=pre.next;
            last=last.next;
        }
        return last;
    }

}
posted @ 2019-11-22 15:45  π。  阅读(104)  评论(0编辑  收藏  举报