题解 | #链表中倒数第k个结点#
链表中倒数第k个结点
http://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
import java.util.*; //这题要求链表的倒数第k个节点,最简单的方式就是使用快慢指针, //快指针先移动k步,然后慢指针再从头开始,这个时候这两个指针同时移动, //当快指针到链表的末尾的时候,返回慢指针即可。 //如果快指针还没走k步的时候链表就为空了,我们直接返回null即可。 //1->2->3->4->5->null ==> null<-5<-4<-3<-2<-1 /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead ListNode类 * @param k int整型 * @return ListNode类 */ public ListNode FindKthToTail (ListNode pHead, int k) { if(pHead == null) return pHead; // 双指针 ListNode fast = pHead; ListNode slow = pHead; //第一个指针先移动k步 while(k-- > 0){ //快指针为null的场合 if(fast == null) return fast; fast = fast.next; } //两个指针同时前进,一直走到fast指针为null。 while(fast !=null){ fast = fast.next; slow = slow.next; } return slow; } }