链表中的倒数第k个结点--剑指offer

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

思路:定义两个结点。第二个结点先走k个点 然后两个结点一起走 直到第二个结点到终点。 可以理解为两个结点构成了一把尺子。

public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        if(head == null || k <=0 ){//链表空或者k小于等于0 直接返回
            return null;
        }
        ListNode l1=head,l2=head;
        while(k  > 0 && l2!=null){
            l2=l2.next;
            k --;
        }
        if(l2==null && k > 0) return null; //l2==null && k>0才能判断k大于链表的长度 。k>0是必须的。有一种情况 链表 1 2,k=2 。此时L2指向空 但是k正好等于链表的长度 此时k==0的
while(l2!=null){ l1=l1.next; l2=l2.next; } return l1; } }
原文地址:https://www.cnblogs.com/nlw-blog/p/12421185.html