输入一个链表,输出该链表中倒数第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; } }