转:https://blog.csdn.net/yjw123456/article/details/81061541
一、解题思路
两个指针p1,p2,开始都指向头结点 * 先让p2走k步 * 然后p1,p2同时向下走 * 当p2指向null的时候,p1就是倒数第k个节点
二、代码
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode FindKthToTail(ListNode head,int k) { if(head==null){ return null; } ListNode p1 = head,p2 = head; while(k > 0 & p2 != null){ p2 = p2.next; k--; } //p2 指向head说明k<=0,p2==null && k>0说明 k超过了链表的长度 if(p2 == head || (p2==null&&k>0)){ return null; } while(p2 != null){ p1 = p1.next; p2 = p2.next; } return p1; } }