。。。剑指Offer之——链表中倒数第k个结点。。。

 1 //    思想很巧妙,一个快指针,一个慢指针,二者相隔k-1
 2     public ListNode FindKthToTail(ListNode head, int k) {
 3         if (head == null || k <= 0) {
 4             return null;
 5         }
 6         ListNode p = head;
 7 //        p是快指针,让p先走k-1步
 8         for (int i = 0; i < k - 1; i++) {
 9             if (p.next != null) {
10                 p = p.next;
11             } else {
12                 return null;
13             }
14         }
15         ListNode pre = head;
16 //        pre是慢指针,快指针走完k-1步以后,p和pre一起以相同的速度走
17         while (p.next != null) {
18             p = p.next;
19             pre = pre.next;
20         }
21 //        此时,p指向最后一个节点,pre指向倒数第k个节点
22         return pre;
23     }
原文地址:https://www.cnblogs.com/yingmeng/p/10777847.html