剑指Offer:链表中倒数第k个结点【22】

剑指Offer:链表中倒数第k个结点【22】 

题目描述

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

解题思考

  我们定义两个指针L和R,R事先移动K-1个位置,然后两者同时往后移动直到遇到R的下个节点为空,此时L节点的位置就是倒数第K个节点。

  

Java题解

package linklist;

public class FindKthToFail {

    public static ListNode FindKthToTail(ListNode head,int k) {

         if(head==null||k==0)
             return null;
         ListNode ptr = head;
         for(int i=1;i<k;i++) {
             if(head.next==null)
                 return null;
             head = head.next;
         }
         while (head.next!=null)
         {
             ptr=ptr.next;
             head=head.next;
         }

        return ptr;
    }

    public static void main(String[] args) {
            ListNode n1 = new ListNode(1);
            ListNode n2 = new ListNode(2);
            ListNode n3 = new ListNode(3);
            ListNode n4 = new ListNode(4);
            ListNode n5 = new ListNode(5);
            n1.next=n2;
            n2.next=n3;
            n3.next=n4;
            n4.next=n5;
        System.out.println(FindKthToTail(n1,2).val);
        }
}

  

 

posted @ 2018-06-23 23:34  子烁爱学习  阅读(220)  评论(0编辑  收藏  举报