题目描述
输入一个链表,输出该链表中倒数第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 }