题目描述

输入一个链表,输出该链表中倒数第k个结点。
 
 
题目链接:
 
关键点:
利用两个相距k个节点距离的快慢指针。
快指针到链表尾部时,慢指针正好指向倒数第k个节点。
 
 
 1 /*
 2 public class ListNode {
 3     int val;
 4     ListNode next = null;
 5 
 6     ListNode(int val) {
 7         this.val = val;
 8     }
 9 }*/
10 public class Solution {
11     public ListNode FindKthToTail(ListNode head,int k) {
12         //空列表、特殊值处理
13         if(head == null || k == 0){
14             return null;
15         }
16         //快指针
17         ListNode pre = head;
18         //慢指针,与快指针慢k个节点
19         ListNode a = null;
20         int pos = 1;
21         while(pre != null){
22             if(pos < k){
23                 pos++;
24             }else{
25                 //达到k个节点的距离时,慢指针开始移动
26                 a = a==null?head:a.next;
27             }
28             pre = pre.next;
29         }
30         return a;
31     }
32 }

 

posted on 2020-06-05 03:30  MoonBeautiful  阅读(118)  评论(0编辑  收藏  举报