题解 | #链表中倒数第k个结点#
链表中倒数第k个结点
http://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a
//两个指针,其中一个指针先走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) { //1.设置两个快慢指针 ListNode quickNode = head; ListNode slowNode = head; //2.让quickNode先走k步 while(k!=0){ if(quickNode==null){ //注意防止k步还没走完,就已经走到空的情况--k>链表长度 return null; } quickNode=quickNode.next; //这一步最边界的位置就是这一步走完后指针为空 //如果循环也正好跳出,说明k的长度为链表长度 k--; } //3.让quickNode和slowNode同时走 while(quickNode!=null){ quickNode=quickNode.next; slowNode=slowNode.next; } return slowNode; } }